【发布时间】:2011-03-18 16:39:42
【问题描述】:
我正在使用 fgets(); 从文本文件中读取行
我有一个循环:while(!feof(fp))
问题是,即使在我到达并阅读了最后一行之后,程序仍继续进入循环,并且在调试文件 ptr 仅显示点而不显示数据字符串。
我怎样才能让它知道我已经走到了尽头而不是再次进入循环?
while (!feof(fp)) {
if (strcmp(data2->ID ,data1->ID)<0) {
fseek(fp, backTo, SEEK_SET);
fprintf( fp, "%s",lin2);
fprintf( fp, "%s",lin1);
flag = 1;
}
else
{
strcpy(data1->ID,data2->ID);
strcpy(data1->name,data2->name);
data1->price=data2->price;
}
if(fgets(line2, sizeof(line2),fp)!=NULL)
{
itemSize2=strlen(line2)+1;
strcpy(data2->ID,strtok (line2,","));
}
}
文本文件中只有 2 行,我使用 fseek 并转到文件开头,然后我使用 fprintf 两次并在这些行上写入,之后我应该到达 EOF
【问题讨论】:
-
简化你的代码,看看 feof 是否仍然行为不端。对于初学者, fset 可能会重置 eof 标志。
标签: c