c:fopen和fprint

时间:2011-06-20 19:58:22

标签: c

据我了解,在下一个代码中:

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。那么 - 发生了什么?

3 个答案:

答案 0 :(得分:10)

这是因为你以模式“a”打开文件,它代表追加。新文本将添加到文件末尾。

如果你想写下已有的内容,请将第二个fopen替换为:

f1 = fopen("f1.txt", "w");

“w”代表写作,并将用新文本替换已存在的内容。

答案 1 :(得分:2)

"a"表示追加;也许你想要"w")?

答案 2 :(得分:1)

当您将“a”作为fopen的第二个参数传递时,您以append-mode方式打开文件,因此它会附加数据。