Почему я не могу прочитать строку по fgets на языке программирования C? - PullRequest
1 голос
/ 27 мая 2020

У меня работает этот код:

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

int main()
{
     FILE *File_fp = fopen("Example.dat", "w");
     char Temporary[50];
     if(!File_fp)
     {
        printf("An error occurred while creating the file.\n");
        exit(1);
     }

     fprintf(File_fp, "This is an example.\n");
     fgets(Temporary, 49, File_fp);

     printf("It was \"%s\"\n", Temporary);
     return EXIT_SUCCESS;
 }

Я напечатал «Это пример». в файле "Example.dat", и я хочу снова прочитать его из файла по приведенному выше коду, но в выводе нет строки. Зачем? Пожалуйста, помогите мне.

Ответы [ 2 ]

3 голосов
/ 27 мая 2020

Вы открываете файл в режиме только для записи («w»). Используйте «w +» для чтения и записи.

FILE *File_fp = fopen("Example.dat", "w+");
0 голосов
/ 27 мая 2020

Чтобы прочитать файл, вы должны использовать режим «r». Пример: FILE *File_fp = fopen("Example.dat", "r");

И вы ошиблись в этом коде. Если создать файл не удалось, функция fopen () вернет NULL . Тогда значение указателя файла будет NULL . Итак, в вашем коде if раздел будет выполняться после успешного создания файла. Итак, измените свой код следующим образом:

if(File_fp)
 {
  printf("An error occurred while creating the file.\n");
  exit(1);
 }

Просто удалите знак (!) Логического НЕ .

...