我在我的代码中遍历来自标准输入的十六进制输入,我注意到当达到 0xff 字节时我无法绕过我的代码停止。我知道发生这种情况是因为循环是:
while( (c=getchar()) != EOF)
但是,我不能忽略这一点,因为否则 getchar 在真正的文件结束之后被调用并且它会出现段错误。如何正确遍历完整输入?
(对不起,我知道这个看似常见的任务应该有一个简单的答案,但我尝试搜索了一段时间,一无所获)
您已声明c
为 char,但getchar()
返回int
. C 的正确循环结构是这样的:
int c;
while ( (c = getchar()) != EOF ) {
// use c here.
}