Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将数据插入预先分配的CSV?_C++_C_File_File Io - Fatal编程技术网

C++ 如何将数据插入预先分配的CSV?

C++ 如何将数据插入预先分配的CSV?,c++,c,file,file-io,C++,C,File,File Io,文本文件(或CSV)为: (但有100个“,”s) 在C或C++中,我想打开文件,然后在“,”.bR>之间填充值。 i、 e.-数据:,1,2,3,4\n 我猜我需要某种搜索来找到下一个逗号,插入数据,找到下一个逗号插入,等等 我在看memchr()的缓冲区,想知道文本文件是否也有类似的缓冲区 如果你能给我指出正确的方向,我将不胜感激 (我也不介意读一本书来找出这样的东西,我只是不知道哪本书会有这样的信息?) 谢谢你。你不能在C。。。如果以读/写模式打开,将覆盖字符,而不是插入字符 您需要打开

文本文件(或CSV)为:

(但有100个“,”s)

<>在C或C++中,我想打开文件,然后在“,”.bR>之间填充值。 i、 e.-
数据:,1,2,3,4\n

我猜我需要某种搜索来找到下一个逗号,插入数据,找到下一个逗号插入,等等

我在看memchr()的缓冲区,想知道文本文件是否也有类似的缓冲区

如果你能给我指出正确的方向,我将不胜感激

(我也不介意读一本书来找出这样的东西,我只是不知道哪本书会有这样的信息?)


谢谢你。

你不能在C。。。如果以读/写模式打开,将覆盖字符,而不是插入字符

您需要打开文件,将该行读入内存,将新行写入临时文件

插入完所有行后,将临时文件复制到原始文件上。我认为没有其他的方法来做。

< P>(这是C++案例) 只需将数据解析为包含数据的对象的链表,修改数据并覆盖文件

首先需要将数据拆分为行(\n创建一个新的链表元素):

将获取字符串(伪列表):

[“数据:,,,,,,”数据2:,,,,,,“]

因此,现在需要为每条线定义对象,如:

class LineStruct {
   public:
    string head;
    LinkedList<string> data;
};
类LineStruct{
公众:
线头;
链接列表数据;
};
然后填满它

然后编辑数据结构,然后将其写回磁盘。

如果有

Data:,,,,,\n
然后没有空间了,要填补,你必须写出全新的行

但是如果你有

Data:   ,   ,   ,   ,   ,   \n
然后您可以只覆盖由
''


在C语言中,您将查找文件的一部分并写入,然后查找下一个pos,对不起,我头上没有代码。

这是我要查找的地方:

  • 用于将行读入
  • 为了找到昏迷
  • 用于构建新的输出线

正如所建议的,您必须使用临时文件,或者在内存中保留所有新行,直到所有行都被处理完毕,然后覆盖原始文件。

根据文件的大小,您可以将其完全加载到内存中,然后在写回时插入数据。这不需要临时文件。使用临时文件的另一个原因是确保在发生崩溃时,不会用已损坏的半成品新文件替换完好的旧文件。但在这种情况下,这并不重要,因为旧文件只是一个空模板。
Data:,,,,,\n
Data:   ,   ,   ,   ,   ,   \n