c - 解析文本文件 - 空格/换行符会被忽略的任何原因?

标签 c

我有这个 while 循环...

char count[3] = {0};
int i = 0;

while( c != ' ' || c != '\n' || c != '\t' ) {
    count[i] = c;
    c = fgetc(fp);
    i++;    
}

即使我在调试时看到空格和换行符是正确的 ASCII 数字,while 循环也不会退出。有人知道是什么原因造成的吗?

最佳答案

条件逻辑不对。它将始终评估为 true

while( c != ' ' || c != '\n' || c != '\t' )

如果 c 等于 ' ' 它不等于 '\n''\t'.

您可能需要的是:

while( c != ' ' && c != '\n' && c != '\t' )

为了更好的衡量,我还会添加 c != EOF

while( c != ' ' && c != '\n' && c != '\t' && c != EOF )

使用起来可能更简单:

while( !isspace(c) && c != EOF )

关于c - 解析文本文件 - 空格/换行符会被忽略的任何原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35168353/

相关文章:

c - 尝试初始化 "employee"结构时收到警告消息

c - 我如何在C语言中使用对数

c - 查找数组中输入数字的中位数

压缩字符数据

c++ - 访问冲突读取位置 0x00184000

c - 这句话到底是什么意思?

c - 如何构建 libion​​?

c - Widechar 排序并从文件加载

c - strtok() 崩溃

c - 线程池如何在 C 中创建带队列的线程池?