c - 文件的行数事先未知

标签 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
}

这是正确的方法吗?

最佳答案

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

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

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

关于c - 文件的行数事先未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154923/

相关文章:

c++ - 使用 ifstream 读取文件

c - sscanf 匹配 double

c - scanf 到结构中的字段的问题

Mac上编译C程序出现 `Undefined symbols for architecture x86_64`错误

c - 为什么在尝试修改字符串常量时会出现段错误?

c++ - Win32 : Set text length in Tree View with cchTextMax

c - C 中指针不保存值

c - Unix 系统中的文件 read() 函数

c++ - 合并两个宏?

c - 从 C、Xcode 中的文件中读取整数