【发布时间】:2014-10-08 22:24:24
【问题描述】:
我有一个文本文件,每行都有数字。我想在 C 中编写一个函数,该函数读取文件并在每次调用该函数时返回文件中的下一个数字。
例如,如果我有这些数字:
100
200
300
400
还有一个叫做get_number()的函数,如果我调用get_number()它会返回100,如果我再次调用它会返回200,等等。
这是我到目前为止所写的,但每次调用该函数时,它总是返回到文本文件中的第一个数字。
int * get_number()
{
FILE* file = fopen("random_numbers.txt", "r");
char line[256];
if (file==NULL)
{
perror ("Error reading file");
}
else
{
fgets(line, sizeof(line), file);
printf("%s", line);
}
return 0;
}
【问题讨论】:
-
您需要在读取后使用
ftell()获取文件中的当前位置,并且您需要在每次后续读取之前使用fseek()查找该位置。跨度> -
您在这里泄漏了文件描述符。至少可以这么说。
-
每次调用该函数时,您都在重新打开文件。尝试在方法之外执行一次,或者在打开文件之前检查该文件是否为 NULL。