解析文本文件 - 为什么会忽略空格/换行的原因?

cpd*_*pd1 0 c

我有这个循环...

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

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

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

R S*_*ahu 5

条件中的逻辑是不对的.它会一直评估true.

while( c != ' ' || c != '\n' || c != '\t' )
Run Code Online (Sandbox Code Playgroud)

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

你可能需要的是:

while( c != ' ' && c != '\n' && c != '\t' )
Run Code Online (Sandbox Code Playgroud)

为了更好的衡量,我还要补充一下c != EOF.

while( c != ' ' && c != '\n' && c != '\t' && c != EOF )
Run Code Online (Sandbox Code Playgroud)

它可能更简单:

while( !isspace(c) && c != EOF )
Run Code Online (Sandbox Code Playgroud)