在C ++中遍历可能包含0xff的十六进制输入

时间:2012-04-23 00:27:17

标签: c++ hex eof getchar

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

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

但是,我不能把它排除在外,因为否则在真正的End-Of-File之后调用getchar并且它会出现段错误。如何正确遍历完整输入?

(对不起,我知道对这个看似很常见的任务应该有一个简单的答案,但我试着找了一段时间,什么也没找到)

1 个答案:

答案 0 :(得分:6)

您已将c声明为char,但getchar()会返回int。 C的正确循环结构如下:

int c;
while ( (c = getchar()) != EOF ) {
  // use c here.
}