文本文件(或CSV)是:
Data:,,,,,\n
(但有100“,”s)
在C或C ++中,我想打开文件,然后在“,”之间填写值
ie- Data:,1,2,3,4,\n
我猜我需要某种搜索来查找下一个逗号,插入数据,找到下一个逗号插入等。
我正在查看memchr()的缓冲区,并想知道文本文件是否有类似内容?
如果你能指出我正确的方向,我将不胜感激。
(我不介意读一本书来找到这样的东西,我只是不知道哪本书会有这些信息?)
谢谢。
答案 0 :(得分:3)
你无法在C中实际执行此操作...如果在读/写模式下打开,您将覆盖字符,而不是插入字符。
http://c-faq.com/stdio/fupdate.html
您需要打开文件,将行读入内存,将新行写入临时文件。
插入完所有行后,将临时文件复制到原始文件上。我认为没有其他办法可以做到。
答案 1 :(得分:2)
(这是针对C ++的情况) 只需使用保存数据的对象将数据解析为链接列表,修改数据并覆盖文件。
首先需要将数据拆分为行(\ n创建新的链表元素):
Data:,,,,,\n
Data2:,,,,,\n
将获得字符串(伪列):
[“数据:,,,,,”,“数据2:,,,,,”]
所以现在你需要为每一行定义你的对象,如:
class LineStruct {
public:
string head;
LinkedList<string> data;
};
并填写。
然后编辑数据结构,然后将其写回磁盘。
答案 2 :(得分:1)
如果你有
Data:,,,,,\n
那么之间没有空间,要填补,你必须写出全新的线条。
但是,如果你有
Data: , , , , , \n
然后你可以只覆盖' '
在C中,你会寻找文件的一部分然后写下来然后寻找下一个pos,抱歉没有任何代码。
答案 3 :(得分:1)
这就是我要看的地方:
根据wmils answer的建议,您必须使用临时文件,或者在内存中保留所有新行,直到处理完所有行,然后覆盖原始文件。