c: fopen и fprint - PullRequest
       5

c: fopen и fprint

3 голосов
/ 20 июня 2011

как я понял, в следующем коде:

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 ]

10 голосов
/ 21 июня 2011

Это потому, что вы открываете файл в режиме «а», что означает добавление.Новый текст добавляется в конец файла.

Если вы хотите записать поверх того, что уже есть, замените второй fopen на:

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

«w» обозначает запись,и заменит то, что уже там, вашим новым текстом.

2 голосов
/ 21 июня 2011

"a" означает append ; возможно, вы хотите вместо "w" ( написать )?

1 голос
/ 21 июня 2011

Вы открыли файл в режиме добавления, когда передали «a» в качестве второго аргумента fopen, поэтому он добавил данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...