我有这个 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/