0
char ch;
while((ch = getchar()) != EOF){
    putchar(ch);
}

显然,上面的代码应该复制我的输入。它确实适用于基本的 ASCII 文本文件。

但是,如果我给它发送一个 gif,特别是这个,但适用于大多数(http://www.cs.utexas.edu/~peterson/prog2/smile.gif),那么当我为 gif 重定向标准输入时,和标准输出到任何文件类型,并在原始文件和新文件上运行差异,错误很多。在这种情况下,超过一半的文件甚至没有被处理,它只是退出。有什么线索吗?我愿意切换到另一个输入/输出功能,只要我可以一次输入一个字节。

4

1 回答 1

4

getchar返回一个int,而不是一个char。区别很重要,因为它可能会返回EOF一个不能是字符的值。

如果将 的返回值转换getchar为 a ,则无法可靠地测试 EOF char。当您击中值为 的字符时,循环将终止(char)EOF

通过声明chint.

于 2013-09-28T01:23:24.480 回答