【问题标题】:Number of rows of a file is not known a priori文件的行数是先验未知的
【发布时间】:2013-08-09 20:15:25
【问题描述】:

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

name surname tel
name1 surname2 tel2

我想以这种方式使用fscanf()这个功能

FILE *fp

...

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

这是正确的方法吗?

【问题讨论】:

    标签: c file scanf


    【解决方案1】:

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

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

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

    【讨论】:

    • @Jim 你不能 :) 大卫,请修正你的答案 - 这个问题是关于 C,而不是 C++。
    猜你喜欢
    • 2014-04-03
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2015-08-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    相关资源
    最近更新 更多