2017-05-27 75 views
0

這是我第一次在這裏爲任何需要道歉的道歉。保存執行之間的信息?

我有一個程序將文本保存到一個單獨的文件中,並在執行完成後保存。我的問題是,由於fprintf的性質,我們被教導使用的功能,每當我重新運行該程序時,我輸入到該文件中的任何內容都會被擦除和替換。

有沒有人有解決這個問題?

在此先感謝。

到目前爲止我的代碼是:

#include <stdio.h> 
#include <string.h> 

int main (void) { 

    FILE *Mem_r; 
    FILE *Mem_w; 
    char word[257]; 
    char comp = 'n'; 
    int count, ret = 1; 

    Mem_w = fopen("Memory_w.txt", "w"); 
    Mem_r = fopen("Memory_r.c", "r"); 

    if (Mem_w != NULL && Mem_r != NULL) { 

     printf("What do you want me to remember?\n"); 

     scanf("%s", &word); 

     fprintf(Mem_w, "%s ", &word); 
    } 
    else { 
     printf("Error"); 
    } 

    return(0); 
} 
+0

你會粘貼到目前爲止你所做的代碼,那麼它會更容易看到你面臨什麼問題? – LethalProgrammer

+2

Yoyr問題與'fprintf()'無關,它與文件打開方式有關。根據'fopen()'文檔,需要在''w「'模式下打開一個現有的文件來丟棄內容,並且從那裏起,就像從新創建的文件開始一樣。這是你使用的模式,所以你看到的行爲是你編碼的。如果您需要不同的行爲,請查看fopen()支持的其他模式的文檔。 – Peter

回答

1

你可以改變你這樣的代碼。

Mem_w = fopen("Memory_w.txt", "a"); 

使用a選項,而不是w,爲w將指示流丟棄要打開的文件。正如@Peter所評論的那樣。