我有一个文件,我需要读取数据并将其存储到结构中。
10001 john
10002 david
10003 randy
10/10/2010 15:50:55 Updated by : Name
现在对于上面的文件,我需要读取'10001'中的数据& 'john'直到'10003'&除了最后一行(文件末尾)之外的'randy'。
如何在C中完成?
更新:最后一行将是动态的。
答案 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 */
}
您不需要先读取一行,然后从中获取数据。相反,只需直接从文件中读取所需的数据。