我在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退出循环。 怎么解决?
答案 0 :(得分:16)
fscanf
- “成功时,该函数返回成功读取的项目数。此数量可以匹配预期的读数数量,或者在匹配失败的情况下少于零。
如果在成功读取任何数据之前输入失败,则返回EOF。“
因此,您可以检查是否== EOF
,而不是像现在这样对返回值执行任何操作。
您应该在致电fscanf
时检查EOF,而不是检查数组插槽是否有EOF。
答案 1 :(得分:7)
while (fscanf(input,"%s",arr) != EOF && count!=7) {
len=strlen(arr);
count++;
}
答案 2 :(得分:3)
如果你的文件中有整数,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);
}