我正在尝试将一个字符作为输入,并将其ascii值作为输出,直到用户将0作为输入。它可以工作,但总会显示10的额外ascii值。我做错了什么?
#include <stdio.h>
#include <stdlib.h>
int main(void){
printf("Welcome to ASCII:\n");
char input;
while(input != 48){
scanf("%c", &input);
printf("ascii: %d\n", input);
}
printf("done\n");
}
输出
Welcome to ASCII:
e
ascii: 101
ascii: 10
h
ascii: 104
ascii: 10
l
ascii: 108
ascii: 10
0
ascii: 48
done
答案 0 :(得分:2)
10是'\n'
的ASCII值,当您按 Enter 时生成的换行符。您可以添加对该字符的检查,而不是打印其值。
使用'0'
代替编写ASCII值48也是一种很好的风格。
while (input != '0') {
scanf("%c", &input);
if (input != '\n') {
printf("ascii: %d\n", input);
}
}
答案 1 :(得分:2)
ASCII值为10是new line character。你在角色之间点击Enter
,这就是打印它的原因。