2

我在我的代码中遍历来自标准输入的十六进制输入,我注意到当达到 0xff 字节时我无法绕过我的代码停止。我知道发生这种情况是因为循环是:

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

但是,我不能忽略这一点,因为否则 getchar 在真正的文件结束之后被调用并且它会出现段错误。如何正确遍历完整输入?

(对不起,我知道这个看似常见的任务应该有一个简单的答案,但我尝试搜索了一段时间,一无所获)

4

1 回答 1

6

您已声明c为 char,但getchar()返回int. C 的正确循环结构是这样的:

int c;
while ( (c = getchar()) != EOF ) {
  // use c here.
}
于 2012-04-23T00:40:29.550 回答