2017-05-27 72 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所评论的那样。