C中的练习告诉我从文件txt中读取信息,其中行数不是先验。例如,我有一个这样的文件:
name surname tel
name1 surname2 tel2
我试图以这种方式使用这个函数fscanf()
FILE *fp
...
while(fscanf(fp, "%s%s%s\n", name, surname, tel) != EOF)
{
//function
}
这是正确的方法吗?
答案 0 :(得分:0)
H2CO3是对的fscanf返回匹配的字段数。
真正的问题通常是您不知道文件中有多少行,因此您不知道为数据分配的结构或数组有多大。一种解决方案是使用可以生长的std:vector。
令人惊讶的是代码经常两次读取文件。一旦计算行数,分配存储然后再次读取数据。这可能是一个理智的解决方案。