3

我试图将一个字符作为输入,并将其 ascii 值作为输出,直到用户给出 0 作为输入。它可以工作,但总是显示一个额外的 ascii 值 10。我究竟做错了什么?

#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
4

2 回答 2

2

10 是 ASCII 值'\n',按下 时生成的换行符Enter。您可以为该字符添加检查而不打印其值。

它也是一种很好的风格,'0'而不是写 ASCII 值 48。

while (input != '0') {
    scanf("%c", &input);

    if (input != '\n') {
        printf("ascii: %d\n", input);
    }
}
于 2012-10-16T01:00:37.357 回答
2

ASCII 值 10 是换行符。你Enter在你的角色之间打,这就是为什么要打印。

于 2012-10-16T01:00:53.970 回答