我在代码中遍历stdin的十六进制输入,我注意到当达到0xff字节时,我无法绕过代码停止。我知道这是因为循环是:
while( (c=getchar()) != EOF)
但是,我不能把它排除在外,因为否则在真正的End-Of-File之后调用getchar并且它会出现段错误。如何正确遍历完整输入?
(对不起,我知道对这个看似很常见的任务应该有一个简单的答案,但我试着找了一段时间,什么也没找到)
答案 0 :(得分:6)
您已将c
声明为char,但getchar()
会返回int
。 C的正确循环结构如下:
int c;
while ( (c = getchar()) != EOF ) {
// use c here.
}