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

标签 c++ hex eof getchar

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

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

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

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

最佳答案

您已将 c 声明为字符,但是 getchar()返回一个 int。 C 的正确循环结构是这样的:

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

关于c++ - 在 C++ 中遍历可能包含 0xff 的十六进制输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273427/

相关文章:

c++ - 多态性和成员函数指针是如何工作的?

c++ - 在C++中使用delphi库

gps - 将行车记录仪 .MOV 文件中的十六进制转换为纬度经度

Python从base64转换为二进制

python - 如何在 Python 中循环直到 EOF?

C++11 普通旧对象默认值

c++ - 为什么通过公开继承另一个类来构建一个类是一种糟糕的做法?

php - 获取 html 实体的十六进制代码

java - EOFException getResponseCode() 异常

c++ - 简单的 C++ 不读取 EOF