如何忽略 C 中输入文件末尾的空格?

How do I ignore spaces at the end of the inputfile in C?

我现在正在处理一个奇怪的问题。基本上,我的 c 程序接收一个 txt 作为输入,我已经知道它应该有多长。因此,阅读后,我检查 EOF 并成功退出。 但如果文本后有空格,我将无法得到 EOF。在文本文件中,用户不会明显注意到空格。如何忽略空格?我想我不能再重复一遍,因为那可能会永远持续下去?输入是字母 a 和 b 的 LEN(gth) x WID(th) 网格(这就是我检查 \n 的原因)。

for(i = 0; i < LEN; i++)
    {
            for(j = 0; j < WID; j++)
            {
                    c = fgetc(infile);
                    if((c != 'a') && (c != 'b'))
                    {
                            return INVALID_INPUT;
                    }
                    board[i][j] = c;
            }
            c = fgetc(infile);
            if (!(c == '\n' || c == EOF))
            {
                    return INVALID_INPUT;
            }
    }

    if(fgetc(infile) != EOF)
    {
            return INVALID_INPUT;
    }

    fclose(infile);
    return VALID_INPUT;

如果你真的需要检查最后是否只剩下空格,你别无选择,只能迭代它。

while (isspace(fgetc(infile))){}
if(fgetc(infile) != EOF) {
    fclose(infile)
    return INVALID_INPUT;
}

您需要 #include <ctype.h> 才能使用 isspace。此循环将跳过所有空格(如空格、制表符和换行符)并在 EOF 或任何非空格字符处停止。

请注意,如果输入无效,您还需要关闭文件。

但这里的大问题是,您是否绝对需要在常规输入后检查其他内容。