文件的行数不是先验已知的

时间:2013-08-09 20:15:25

标签: c file scanf

C中的练习告诉我从文件txt中读取信息,其中行数不是先验。例如,我有一个这样的文件:

name surname tel
name1 surname2 tel2

我试图以这种方式使用这个函数fscanf()

FILE *fp

...

while(fscanf(fp, "%s%s%s\n", name, surname, tel) != EOF)
{
  //function
}

这是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

H2CO3是对的fscanf返回匹配的字段数。

真正的问题通常是您不知道文件中有多少行,因此您不知道为数据分配的结构或数组有多大。一种解决方案是使用可以生长的std:vector。

令人惊讶的是代码经常两次读取文件。一旦计算行数,分配存储然后再次读取数据。这可能是一个理智的解决方案。