2012-04-23 158 views
2

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

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

但是,我不能离开这一点,因为否则的getchar是真正的档案结尾之后调用,它出现segfaults。我如何正确地遍历整个输入?

(抱歉,我知道应该有一个简单的答案,这个看似普通的任务,但我试图寻找了一段时间,并没有发现任何)

+0

while((c = getchar())!= EOF)的主体执行当且仅当刚刚读取的值不是EOF。我怀疑这个错误在哪里。请更多代码。 – ScarletAmaranth 2012-04-23 00:37:10

回答

6

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

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