【问题标题】:How to read 1000 or more columns data from file using c/c++ language?如何使用 c/c++ 语言从文件中读取 1000 列或更多列数据?
【发布时间】:2013-01-08 08:09:23
【问题描述】:

具有 10000 行和 1000 列的数据文件。我想将整行保存到数组或每列保存到变体。

C语言中有一个标准函数fscanf,如果使用这个函数,我需要写1000次格式。

fscanf(pFile, "%f,%f,%f,%f,%f,%f,......", &a[0], &a[1],...,a[999]);

在 C 中编程时几乎不可能这样。 但是,我不知道用 C 语言来实现它。 有什么建议或解决方案吗?

以及,如何读取或提取某些列数据?

【问题讨论】:

  • 循环。列可以循环,就像行可以循环一样。

标签: c file-io readfile multiple-columns data-processing


【解决方案1】:

使用fgets() 将文件逐行读取到适当大的缓冲区中。不要害怕使用 32 KB 或其他大小的缓冲区,以确保所有字段都适合。

然后在循环中解析该行,可能使用strtok() 或只是简单的旧strtod()。请注意,后者返回一个指向第一个不被视为数字的字符的指针;这是您解析下一个数字的地方。也许您需要添加一个内部循环来“吃”空白(或您拥有的任何分隔符)。

【讨论】:

  • 事实上,“适当大的缓冲区”只需要足够大以容纳单个数据条目。这会带来更大的管理开销,但它比——用比尔·盖茨的话说——“当然 32 KB 对每个人来说都足够了”更安全。
【解决方案2】:

您可以逐行读取文件,然后循环提取数字。

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多