2016-11-10 34 views
-2

我写交流代码其中有一个文件格式,如下面的文件处理:更新/覆盖在C文件,而无需创建一个新的或临时文件


Domain1:IP:Port:Id1,Id2,Id3 
Domain2:IP:Port:Id1,Id2, 

它应该可以添加新的新行,也应该可以修改现有的域ID。并且对于修改ID,我的意思是,可以增加或减少ID的数量,例如在一个操作中,我应该能够在上面的示例中将ID4添加到Domain1,并且在另一个操作中,我应该能够删除Domain2的ID1作为示例。

所以我的问题(感谢帮助):

  1. 我不想创建一个临时/新文件,并更改名称,并删除旧文件。所以我可以读写现有文件吗?如何使它安全? (我尝试了一些更新行的例子(使用fwrite),但是当我在一些试验中添加更多字符(如ID4和其他奇怪字符)时,我发现它从下一行删除了一些字符))。任何示例代码?

  2. 后来我也需要使用锁定文件,所以只有一个应该能够一次读取和写入。任何建议/链接表示赞赏。

非常感谢。

回答

0

对于追加到一个文件,你不需要临时文件或任何东西。如果您想用等于字符数替换某些字符,则不需要临时文件。

,如果你想要做的任何其他修饰,改变你需要某种形式的一些临时缓冲区内容的大小。无论是临时文件还是内存缓冲区。

+0

感谢yoru回答,在我的情况下,每行可能有更多或更少的字符修改后,我不想创建一个新文件,但是,我试图创建一个字符串与新文本,并尝试做fwrite。像这样:char str [30]; strcpy(str,“local:IP:Port:1,3,5”); (f); int dom_len = strlen(sds_domain); int test1 = ftell(f); printf(“LINE NUMBER%d”,test1); fwrite(str,1,strlen(str),f); 但它会覆盖第二行中的文本。 – Richi

相关问题