如何忽略 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 或任何非空格字符处停止。
请注意,如果输入无效,您还需要关闭文件。
但这里的大问题是,您是否绝对需要在常规输入后检查其他内容。
我现在正在处理一个奇怪的问题。基本上,我的 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 或任何非空格字符处停止。
请注意,如果输入无效,您还需要关闭文件。
但这里的大问题是,您是否绝对需要在常规输入后检查其他内容。