【发布时间】:2016-01-22 16:01:56
【问题描述】:
我正在用 c 编写一个程序,它逐行读取并对每一行的元素进行一些操作。我这样调用我的 read_row 函数。
while(filePointer!=NULL)
{
int result=readRow(filePointer,headerRow,lineRow);
printf("The value of row is |%d|\n",result);
}
在我的 read_row 函数中,我使用 get c 遍历该行。
cc=getc(fp);
while((cc!='\n') && (cc!= EOF))
{
*line=cc;
line++;
if(cc==',')
{
counterr++;
}
cc=getc(fp);
}
if(cc==EOF)
{
fp=NULL;
}
我正在尝试遍历所有行。然而,这个循环是无限的,因为文件指针永远不会变为空。如果 cc 等于 EOF,我试图将文件指针设置为 null。然而,这根本没有帮助。因此,请解释我应该如何正确终止该循环。我相信 '\n' 在 EOF 之前出现。因此,文件指针不会变为 null。我必须使用文件指针来完成它,因为我已经基于该逻辑制作了一个非常大的程序。此外,我只能找到使用 fgets() 等方法进行遍历的示例。
【问题讨论】:
-
显示函数定义。
-
如果你的逻辑是基于当
filePointer是NULL时结束,你怎么去fclose呢? -
函数定义需要FILE *。我什至没有考虑 fclose()。有没有更好的方法来解决这个问题?我可以创建另一个文件指针副本并调用 fgets。两者都对应同一个文件,两者都会前者能够终止后者。
-
如果你的系统有getline(3)
-
filepointer 是变量的名称,直到现在,由于在 C 中读取某些内容,变量没有机会更改值,除了读取值所在的目标存储完毕。也许您正试图想象在其他语言中也能像这样工作的东西?
标签: c file loops pointers while-loop