据我了解,在下一个代码中:
int main () {
FILE * f1;
f1 = fopen("f1.txt","a");
for (i =0 ; i<10;i++) fprintf(f1,"%d ",i);
fclose(f1);
f1 = fopen("f1.txt","a");
for (i =0 ; i<10;i++) fprintf(f1,"%d ",i);
fclose(f1);}
我将进入文件f1,下一个序列:0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
。我不明白为什么。当我关闭文件并再次打开它时,它不记得结束文件。我预计第二个循环将覆盖之前的文本,我将只获得0 1 2 3 4 5 6 7 8 9
。那么 - 发生了什么?
答案 0 :(得分:10)
这是因为你以模式“a”打开文件,它代表追加。新文本将添加到文件末尾。
如果你想写下已有的内容,请将第二个fopen替换为:
f1 = fopen("f1.txt", "w");
“w”代表写作,并将用新文本替换已存在的内容。
答案 1 :(得分:2)
"a"
表示追加;也许你想要"w"
(写)?
答案 2 :(得分:1)
当您将“a”作为fopen的第二个参数传递时,您以append-mode方式打开文件,因此它会附加数据。