如何用c在csv文件的行尾写新字符串

时间:2015-09-30 09:22:58

标签: c csv

我正在编写一个C代码,如果条件匹配,需要在行尾添加新信息。

    FILE *file = fopen(fileName, "r+");

    //read every line if line!=NULL
    while (fgets(line, LINE_SIZE, file)!= NULL){
        //split the line by sep
        split(line, ',', fields);       
        fprintf(file,",%d,%d,%d",D,F,G);
   }

这是我尝试编写匹配信息的代码。但是,它会在行的开头写入信息。这可能我可以将“文件”指针移动到行尾吗?

2 个答案:

答案 0 :(得分:0)

您可能需要遵循更多步骤

打开临时文件和现有文件

FILE *file = fopen(fileName, "r");
FILE *tmpFile = fopen(tempFileName, "a+" );

从现有文件中获取一行,修剪下一行在逗号后附加您的字段,可能会创建逗号分隔的额外字段字符串

while (fgets(line, LINE_SIZE, file)!= NULL){

删除新行并添加您的参数

    if( line[ strlen(line) - 1  ] == '\n' )
        line[ strlen(line) - 1  ] = '\0';

    fprintf(tmpFile,"%s,%s\n",line, your_field); // Write to temporary file
}

删除旧文件取消链接可能很有用

man -a unlink

然后将临时文件重命名为原始文件

man -a rename

答案 1 :(得分:0)

没有办法做你想做的事。您不能在文件中间插入字节。

但是,如果你有空格或类似的东西允许将字节写入文件而不覆盖数据,你可以完成一些接近你想要的东西。说你有线

"1,2,3,            "
"4,5,6,            "

(注意空格)你可以在那里插入文字。我会使用两个文件指针:

  • 在行开始时从读取文件指针获取位置
  • 使用该文件指针
  • 读取该行
  • 添加字节数,直到第一个空格到位置
  • 寻找指向此位置的其他文件指针
  • 撰写新数据并确保有足够的空间

第一个文件指针位于"读取"模式,第二个"写"在"截断"中没有模式因为这会搞砸你的文件。

或使用更好的数据库格式。 ;)