How can i put this symbol (€) on the terminal using c. I've tried:
printf("%c",0128);
0128 is the code on the ascii table but the compiller gives the error:
invalid digit 8 in octal constant
How can i put this symbol (€) on the terminal using c. I've tried:
printf("%c",0128);
0128 is the code on the ascii table but the compiller gives the error:
invalid digit 8 in octal constant
Numeric literals that begin with 0 like that, are interpreted as octal (base 8) and therefore comprised solely of digits from 0-7. So 08 is illegal, and so is 0128.
Windows-1252 (CP-1252) encoding of the euro sign € is decimal 128.
What you have posted an image of is the Alt code which is a way of entering the character on Windows by typing: Alt0128 on the numeric key pad.
You may be able to fix your problem by removing the leading zero (to produce the decimal literal 128), provided you are using CP-1252.
You're confusing a few things here.
First, the table of which you posted a fragment does not show character codes. It apparently documents how to enter characters on Windows (I covered this in a reply to another question here: C# Mapping ALT+<XXX> codes to characters). The leading zero here means that the character code you're entering refers to the so-called ANSI codepage instead of OEM one.
Note that the character you get by typing Alt+0128 may vary from computer to computer.
Also note that 128 is not an ASCII code. ASCII only covers character codes 0 to 127.
Second, leading zero in an integer literal in C and its successors has a different meaning. It means that the number is written in the octal numeral system. Octal notation was more popular than hexadecimal back in 70s when C was drafted. By definition, 8 is not a valid octal digit, so 0128 is a lexical error.
These two meanings are unrelated. So, if you want to print a character that is entered by the key combination Alt+0128, you need to do that otherwise.
Also note that in many cases you cannot have € expressed as one char unit. If your console is configured to UTF-8, then the Unicode codepoint for it, 0x20AC, is represented by three bytes: 0xe2, 0x82, 0xac (or 226, 130, 172).
The best way to print stuff like that is... don’t use hex/oct/whatever constants, use a string.
Use your text editor’s ability to save source code as UTF-8 and do that directly:
puts( "Dinner is €12.50." );
Assuming:
That last one is the sticking point. Most modern systems work over UTF-8 display, but the old Windows Console is still in use in a lot of places, and that requires a little extra help. Make sure to have it working in UTF-8 output mode (chcp 65001 on the command-line or the equivalent in code using SetConsoleOutputCP).