从ASCII码中获取不同的值
我有一个应用程序,它会提示用户输入来自用户的字符:从ASCII码中获取不同的值,c,ascii,C,Ascii,我有一个应用程序,它会提示用户输入来自用户的字符: char letter; printf("Letter:\n"); scanf("%s", &letter); printf("ASCII code = %d\n", letter); 问题在于用户可以书写的重音。如果输入是Á上面给定的ASCII码=-61,那么我想,如果我把它变成正数,我会得到61,也就是ASCII码中的A打印F(“ASCII代码=%d val=%c\n”,字母,abs(字母)) 但它并没有像预期的那样工作,它给出了
char letter;
printf("Letter:\n");
scanf("%s", &letter);
printf("ASCII code = %d\n", letter);
问题在于用户可以书写的重音。如果输入是Á
上面给定的ASCII码=-61,那么我想,如果我把它变成正数,我会得到61
,也就是ASCII码中的A
<代码>打印F(“ASCII代码=%d val=%c\n”,字母,abs(字母))代码>
但它并没有像预期的那样工作,它给出了ASCII代码=-61 val=
而不是
A
为什么?%s
是C字符串的格式说明符,字符的大小仅足以容纳空C字符串。使用%c
,它是单个字符的格式说明符。Á
具有ASCII格式的字符代码193
字符的范围是-128到127。无符号字符的范围为0到255
代码的问题是您使用的是有符号字符而不是无符号字符。当您输出带符号的字符时,它会将字母
符号扩展为整数并输出它。如果使用无符号变量,您将获得正确的输出。已修复。:)但是如何解决ASCII码输出的问题呢?你确定abs(字母)输出“A”,我把“=”(ASCII+61)。正如Pochi所说,你的字符是有符号字符。使用无符号字符;ASCII字符最多只有127个-ASCII中没有Á(ISO-8859-1中的代码点193)。