如何读取除C中最后一行以外的文件?

时间:2010-08-05 09:21:21

标签: c file struct readfile

我有一个文件,我需要读取数据并将其存储到结构中。

10001 john
10002 david
10003 randy
10/10/2010 15:50:55 Updated by : Name

现在对于上面的文件,我需要读取'10001'中的数据& 'john'直到'10003'&除了最后一行(文件末尾)之外的'randy'。

如何在C中完成?

更新:最后一行将是动态的。

4 个答案:

答案 0 :(得分:0)

逐行阅读。当你EOF丢弃最后一行时。

编辑:

while (fgets(line, length, file) && !feof(file))
{
   /* process the line */ 
}

答案 1 :(得分:0)

如果文件没有最后一行,你会怎么做?大概在某种循环中,读取每一行并保存它。

您可以在保存之前添加“if”,检查该行是否与“文件结尾”匹配。

通常,遇到这些问题,请将问题分解为您可以理解的位。然后将这些位合在一起。

如果文件看起来像

,您可能还想考虑应该怎么做
10001 john
10002 david
Silly line in middle of file
10003 randy
End of the file
10003 mr unexepected

您的应用程序应该能够适应奇怪的输入。

答案 2 :(得分:0)

char line[81];
FILE *f=fopen("file","rt");

while( fgets(line,sizeof line,f) )
{
int tag1;
char tag2[81];
if( 2==sscanf(line,"%d%80s",&tag1,tag2) )
{
/* do anything */
}
}

答案 3 :(得分:0)

int id;
char name[80];

FILE *fp = fopen("data.txt", "r");

while (fscanf(fp, "%d%s[^n]", &id, name) == 2)
{
   /* do something with id and name */ 
}

您不需要先读取一行,然后从中获取数据。相反,只需直接从文件中读取所需的数据。