如何在CSV文件的顶部插入数据?

时间:2010-07-13 17:07:57

标签: c file csv

如何回到csv文件的最开头并添加行?

(我正在使用fprintf()从C打印到CSV文件。在打印数千行(5列)数据的最后,我想回到文件的顶部并插入一些动态标题数据(基于事物如何打印所有内容)。)

谢谢。

4 个答案:

答案 0 :(得分:5)

由于文件的结构方式,这或多或少是不可能的。为了实现你想要的目标:

  1. 将csv数据写入file1
  2. 将标题写入file2
  3. 将file1的内容复制到file2
  4. 删除file1
  5. 或者您可以在ram中保存csv数据,并在完成处理并知道标题后将其写入文件。

    另一种选择是为标题留出一定数量的字节,这对于大文件来说,以最小的空间成本工作得更快。由于在写入开始时在文件中分配了空间,因此没有任何问题可以返回并填写。将文件重新打开为随机访问(“r +”),默认情况下指向文件的顶部,写标题,并关闭。

答案 1 :(得分:2)

最简单的方法是简单地将文件的全部内容存储在内存中,直到完成,写出标题,然后写出文件的其余部分。

如果内存存在问题并且您无法安全地将整个文件存储在内存中,或者只是不想这样做,那么您可以将大量CSV数据写入临时文件,然后在完成后,将标题写入主文件,并将数据从临时文件复制到主文件中。

如果您想要将主CSV数据写入主文件后,您可以从头开始循环访问该文件,将您要用标题覆盖的数据读入内存,然后写入在该数据顶部的标题,等等,将每个块读入内存,用前一个覆盖它,直到到达结尾并附加最后一个块。通过这种方式,您可以在开头“插入”数据,然后将文件的其余部分向下移动。我真的不会推荐这个,因为它主要只是增加复杂性而没有太大的好处,除非有一个特定的原因你不能做一些比使用临时文件更简单的事情。

答案 2 :(得分:1)

我认为这是不可能的。可能最简单的方法是将输出写入临时文件,然后创建所需的数据作为动态标头,将它们写入目标文件并附加先前创建的临时文件。

答案 3 :(得分:1)

  • 在第一行填写足够的空格
  • 写数据
  • 寻道(0)
  • 写标题 - 最后一列将填充空格