2011-06-20 57 views
3

我的理解,在下面的代碼:C:的fopen和fprint

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。所以發生了什麼事?

回答

10

這是因爲你打開文件的模式「a」,它代表追加。新文本被添加到文件的末尾。

如果你想要寫在什麼已經存在,替換爲第二的fopen:

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

「W」表示寫,並將取代什麼已經存在與你的新文本。

2

"a"表示附加;也許你想"w")而不是?

1

當您將「a」作爲第二個參數傳遞給fopen時,您在append-mode中打開了該文件,因此它附加了數據。