繁体   English   中英

printf语句中的额外输出行

[英]extra line of output in printf statement

我正在尝试将一个字符作为输入,并将其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

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

使用'0'代替编写ASCII值48也是一种很好的风格。

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

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

ASCII值为10是新行字符 你在你的角色之间进行Enter ,这就是打印它的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM