printf语句中多余的输出行

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
2个回答

2

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

此外,使用'0'而不是写ASCII值48是很好的风格。

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

    if (input != '\n') {
        printf("ascii: %d\n", input);
    }
}

2

10的ASCII值是换行符。你在字符之间按下了Enter键,这就是为什么会打印出来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接