2015-05-13 5 views
2

Я просмотрел интернет, пытаясь найти решение для записи строки за строкой в ​​файл в c. Я нашел решения, такие как изменение режима fopen() на w+, wt, wb, но это не сработало для меня. Я даже прочитал, чтобы положить \r вместо \n в конце строки, но все же, когда я пытаюсь записать в файл, единственное, что написано, это последняя строка.Как правильно добавить строки к уже существующему файлу

FILE *log = NULL; 
    log = fopen(fileName, "w"); 
    if (log == NULL) 
    { 
     printf("Error! can't open log file."); 
     return -1; 
    } 

    fprintf(log, "you bought %s\n", pro[item].name); 
    fclose(log); 

Большое спасибо за ваше время и помощь.

+3

'Еореп (независимо от того, "а")' является то, что вам нужно. – pmg

+0

спасибо! это работает! – user193239

+1

«Запись строки за строкой в ​​файл» будет (по крайней мере, для меня) подразумевать, что вы пишете несколько строк за раз, где вместо этого вы хотите * добавить * к файлу, написав одну строку. – crashmstr

ответ

5

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

Лучше всего было бы использовать:

fopen("filename", "a"); 
2

Если я понял вашу проблему правильно, вы можете иметь два подхода,

Случай 1(открытие/закрытие несколько раз, записать одно значение в то время)

Вам нужно открыть файл в append режим сохранения предыдущего содержимого. Проверьте man page от fopen() за a или append режим.

Случай 2(открытие/закрытие один раз, записывая все значения на участке)

нужно поставить fprintf() заявление в каком-то loop, чтобы получить все элементы печатных, т.е. индекс (item) Значение от 0 до не более значение.