我有这个循环...
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循环也不会退出.有人知道是什么原因引起的吗?
条件中的逻辑是不对的.它会一直评估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)