C 将值插入到文件中

C 将值插入到文件中,c,file-io,C,File Io,在下面的代码中,我已将值1-9保存在Excel文件中,并希望插入一个介于4和5之间的a。我已将指针设置到位置7,但它仍在最后插入。请帮助我理解这一点 FILE *ExcelFile = fopen("testdata.csv","a"); if (ExcelFile == NULL) return -1; fprintf(ExcelFile,"1 2 3 4 5 6 7 8 9"); fseek (ExcelFile, 7, SEEK_SET ); //printf("pos is %

在下面的代码中,我已将值1-9保存在Excel文件中,并希望插入一个介于4和5之间的a。我已将指针设置到位置7,但它仍在最后插入。请帮助我理解这一点

FILE *ExcelFile = fopen("testdata.csv","a");
 if (ExcelFile == NULL)
 return -1;
 fprintf(ExcelFile,"1 2 3 4 5 6 7 8 9");
 fseek (ExcelFile, 7, SEEK_SET );
 //printf("pos is %ld bytes\n", pos);
 fprintf(ExcelFile,"a");
 fclose(ExcelFile);

不能只将值插入到文件中。您必须打开一个新文件,先复制第一个文件的第一部分,然后复制您的值,然后复制其余部分,然后用新文件替换旧文件,或者,如果文件较小,则将其读入内存,清除文件,然后写入正确的文件。

您不能只将值插入文件。您必须打开一个新文件,先复制第一个文件的第一部分,然后复制您的值,然后复制其余部分,然后用新文件替换旧文件,或者,如果文件较小,将其读入内存,清除该文件,然后写入正确的文件。

此操作不起作用的原因是您正在打开文件以便在fopen调用中附加a标志。每当您写入文件时,您写入的数据将始终被追加。如果文件在打开之前不存在,请改用fopentestdata.csv,w。

此操作不起作用的原因是,打开文件是为了在fopen调用中附加a标志。每当您写入文件时,您写入的数据将始终被追加。如果您的文件在打开之前不存在,请使用fopentestdata.csv,而不是w。

谢谢qbert220先生,谢谢很多人都很棒,谢谢,我遇到了另一个问题,通过设置g模式w将其覆盖在写值4上并插入a如果我用w替换a,代码对我来说是正确的。它将4和5之间的空格替换为,最后在文件中显示为1 2 3 4 A5 6 7 8 9。如果你的意思是你想让文件变长,最后得到1 2 3 4a 5 6 7 8 9,那么你需要遵循Armen的建议。谢谢qbert220先生,谢谢你,很多人都很棒,谢谢,我遇到了另一个问题,通过设置g模式w它超过写值4并插入a,如果我用w替换a,代码对我来说是正确的。它将4和5之间的空格替换为,最后在文件中显示为1 2 3 4 A5 6 7 8 9。如果你的意思是,你想让文件更长,并最终以12344A567889结束,那么你需要遵循Armen的建议。