В следующем C
-коде я открываю файл с именем test.txt
, который содержит несколько строк. Затем я читаю эти строки в цикле while и печатаю их до stdout
. Впоследствии я делаю несколько изменений в файле, например. добавив к нему номер 42
. Затем я хочу распечатать содержимое измененного файла до stdout
, но я, кажется, что-то там не вижу. Вот мой код до сих пор (излишне комментировал):Открыть файл, распечатать на стандартный вывод, добавить в файл и снова распечатать на stdout
#include <stdio.h>
#include <stdlib.h> /* for exit() */
main()
{ /* Declare variables */
FILE *file_read;
char file_save[100];
int number = 42;
/* Open file */
file_read = fopen("/home/chb/files/Cground/test.txt", "a+");
/* Check if file exists. */
if (file_read == NULL) {
fprintf(stderr, "Cannot open file\n");
exit(1);
}
/* Print what is currently in the file */
printf("This is what is currently in the file:\n");
while(fgets(file_save, 100, file_read) != NULL) {
printf("%s", file_save);
}
/* Change the contents of the file */
fprintf(file_read, "%d\n", number);
/* Print what is in the file after the call to fscanf() */
printf("This is what is now in the file:\n");
/* Missing code */
fclose(file_read);
}
Кажется, что простой, а петля находится там, где Missing code
есть, похожий на тот, уже использовавшегося до этого не будет достаточно. Может кто-нибудь объяснить, что происходит. Я не против технических соображений!
Вы должны позвонить fseek (file_read, 0, SEEK_SET); сначала, чтобы снова вернуться к началу файла. –
Вы опубликовали бы это как реальный ответ? (Отличное имя, кстати!) –
хорошо, сделано! (Ха-ха, да спасибо!) –