我有一个应用程序,它提示用户输入来自user的字符:
char letter;
printf("Letter:\n");
scanf("%s", &letter);
printf("ASCII code = %d\n", letter);问题在于用户会写的口音。如果输入是上面给出的ASCII码= -61的代码,那么我想,如果我把它变成一个正数,我就得到了61,它在ASCII码中是A。printf("ASCII code = %d val = %c\n", letter, abs(letter));
但它并没有像预期的那样工作,它给了ASCII code = -61 val =而不是A,为什么?
发布于 2012-02-17 10:25:14
Á的ASCII码为193。
char的范围是-128到127。unsigned char的范围是0到255。
您的代码的问题在于您使用的是带符号的字符,而不是无符号的字符。当您输出有符号字符时,它会将letter符号扩展为一个整数并将其输出。如果你使用无符号变量,你会得到正确的输出。
发布于 2012-02-17 09:26:09
%s是C字符串的格式说明符,一个字符只能容纳一个空的C字符串。使用%c,它是单个字符的格式说明符。
https://stackoverflow.com/questions/9321664
复制相似问题