为什么ascii字符用putchar打印两次?

时间:2017-01-31 22:48:37

标签: c character ascii

当我运行此代码时,它会打印dos 0字符(空格)一次,放置一个空格并打印dos 1字符(带有白色眼睛和嘴巴的笑脸)。 http://prnt.sc/e2w6bk

int c = 0, b = 1;
printf("%c %c", c, b);

但是当我在下面运行此代码时,结果将被打印两次。我得到2个空格或2个笑脸。 http://prnt.sc/e2w6mt

while(c != -1)
{
    c = (getchar() != EOF);
    putchar(c);
}

编辑:我的代码将每个输入的字符转换为ascii 0或1(我想这样做以检查c可以在此代码中采用的值)。如果你想要c取你给它的角色那么你应该使用

while((c = getchar()) != EOF)

使用它将保持\ n为\ n。

1 个答案:

答案 0 :(得分:1)

你的问题是'\ n'字符不等于EOF。 '\ n'作为第二个字符被读入。