如何通过fscanf找到EOF?

我在fscanf()的帮助下通过文件读取矩阵。 我怎样才能找到EOF? 即使我试图在arr []中捕获的每个字符串后找到EOF,那么我也无法找到它。

在计数的帮助下,我正在读取输入文件

-12 23 3

1 2 4

int main() { char arr[10],len; int count=0; FILE *input= fopen("input.txt", "r"); while(count!=7) { fscanf(input,"%s",arr); //storing the value of arr in some array. len=strlen(arr); count++; if(arr[len+1]==EOF) printf("\ni caught it\n");//here we have to exit. } return 0; } 

而不是计数我想通过EOF退出循环。 怎么解决?

fscanf – “成功时,该函数返回成功读取的项目数。此数量可以匹配预期的读数数量,或者在匹配失败的情况下少于零。在任何数据输入失败的情况下可以成功阅读,退还EOF。“

因此,您可以检查是否== EOF ,而不是像现在一样对返回值执行任何操作。

调用fscanf时应该检查EOF,而不是检查arrays插槽是否有EOF。

 while (fscanf(input,"%s",arr) != EOF && count!=7) { len=strlen(arr); count++; } 

如果文件中有整数,则fscanf返回1直到整数出现。 例如:

 FILE *in = fopen("./task.in", "r"); int length = 0; int counter; int sequence; for ( int i = 0; i < 10; i++ ) { counter = fscanf(in, "%d", &sequence); if ( counter == 1 ) { length += 1; } } 

要使用符号查找文件末尾,可以使用EOF。 例如:

 char symbol; FILE *in = fopen("./task.in", "r"); for ( ; fscanf(in, "%c", &symbol) != EOF; ) { printf("%c", symbol); }