我正在编写一个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);
}
这是我尝试编写匹配信息的代码。但是,它会在行的开头写入信息。这可能我可以将“文件”指针移动到行尾吗?
答案 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, "
(注意空格)你可以在那里插入文字。我会使用两个文件指针:
第一个文件指针位于"读取"模式,第二个"写"在"截断"中没有模式因为这会搞砸你的文件。
或使用更好的数据库格式。 ;)