我看到了这个复制方法。在一个循环中,您一个一个地读取字符并打印它们。 当我尝试重现这个时,我遇到了几个问题:
- 我的循环永远不会结束——这意味着没有EOF;
- 我的输出是一些奇怪的字符,它会 self 重复——无论我输入什么字符/字符序列;
我尝试过使用 int
和 char
,但我还是红色 this thread我知道它应该是 int 因为 char 没有 EOF
终止符。
另外我不明白为什么要使用 int
而应该是 char
。
int x;
while(x = getchar() != EOF){
putchar(x);
}
return 0;
我希望将我的输入文本复制到输出,然后以代码 0 退出。 实际输出是: 。 (此处不可见)。
最佳答案
while(x = getchar() != EOF)
应该是
while((x = getchar()) != EOF)
你的代码等同于
while(x = (getchar() != EOF))
Also i do not understand why use int when it should be char.
因为 EOF 不能用 char
表示。所有可以用 char
表示的值也可以用 int
表示,但反之则不行。但除非 getchar()
返回 EOF,否则它将返回一个可以用 char 表示的值。所以这段代码完全没问题:
while((x = getchar()) != EOF) {
char c = x; // Will always work if you have checked for EOF
重要!
请注意:
char x;
while((x = getchar()) != EOF)
会“工作”。它会在 EOF 结束循环。但是还会有另一个值会被错误地解释为 EOF。这可以用这个片段来证明:
char c = EOF;
if((char)255 == c)
printf("Ooops!\n");
关于c - 一次将一个字符的输入复制到输出的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58557606/