我试图理解用C语言读取和写入文件的函数之间的交互。
在这个例子中,我使用了一个文本,里面有三行短文。
如果按照下面的说明执行程序,则会将NOTHING写入文件。为什么呢?
此外,如果我注释掉fgets()指令,则会执行两个fprintf(这些命令会覆盖文件第一行的一部分,这是我所要求的)。
我不知道fgets阻止fprintf发生的原因。我认为在fgets指令之后,XX文件将从文件的第二行开始写入。我错过了什么?
#include <stdio.h>
#include <string.h>
#define MAX 100
#define FILENAME "file.txt"
int main(){
FILE *f1;
char buff[MAX];
f1 = fopen(FILENAME,"r+");
if(f1==NULL) return 0;
fgets(buff,MAX,f1);
printf("%s",buff);
fprintf(f1,"XX \n");
fprintf(f1,"XX \n");
fclose(f1);
}
编辑:感谢评论,(和这个问题fprintf not working)我理解解决方案是在读取和写入文件之间执行fseek。如果可能的话,我想了解为什么需要这个fseek,即文件指针会发生什么......