从ASCII码获取不同的值

时间:2012-02-17 01:25:07

标签: c ascii

我有一个应用程序提示用户使用角色:

char letter;
printf("Letter:\n");
scanf("%s", &letter);
printf("ASCII code = %d\n", letter);

问题是用户可以写的重音。如果输入Á上面的代码给定ASCII代码= -61那么我想,如果我把它转为正数,我得到61A的ASCII。 printf("ASCII code = %d val = %c\n", letter, abs(letter));

但它没有按预期工作,它给出了ASCII code = -61 val =  而不是A为什么?

2 个答案:

答案 0 :(得分:1)

%s是C字符串的格式说明符,字符大小足以容纳空C字符串。使用%c,这是单个字符的格式说明符。

答案 1 :(得分:0)

Á包含ASCII字符代码193。

char的范围是-128到127. unsigned char的范围是0到255.

您的代码存在的问题是您正在使用签名的char而不是unsigned char。当您输出signed char时,它会将letter扩展为一个整数并输出它。如果您使用未签名的变体,您将获得正确的输出。