Как читать из файла, используя fgets?

Я пытаюсь прочитать содержимое "Danfilez.txt", используя fgets. Однако по завершении программа возвращает случайное значение, и я не уверен, почему. Я новичок в программировании, поэтому любая помощь будет принята с благодарностью!

int main()
{
    FILE* Danfile = fopen ("Danfilez.txt", "w");
    char fileinfo [50];// Character arrays for file data //

    if (Danfile == NULL)
    {
        printf ("ERROR\n");

    }

    else
    {
        printf("Everything works!\n");
        fprintf (Danfile, "Welcome to Dan's file."); 
        fgets(fileinfo,50,Danfile);
        printf("%s\n",fileinfo);
        fclose (Danfile); // CLOSES FILE //
    }


    return 0;
}

2 ответа

Поскольку вы одновременно читаете и пишете из файла, вы хотите использовать "w +", чтобы открыть файл, а не просто "w".

Но это не исправит ситуацию, потому что после того, как вы написали этот текст, ваша позиция в файле все еще находится в конце, поэтому вам также необходимо сбросить позицию, прежде чем вы сможете что-либо прочитать с помощью fseek()

fseek(Danfile,0,SEEK_SET);

При использовании fopen() вы передаете опцию для открытия в качестве аргумента функции. Вот список:

"r"  - Opens the file for reading. The file must exist. 
"w"  - Creates an empty file for writing. If a file with the same name already exists,
      its content is erased and the file is considered as a new empty file.
"a"  - Appends to a file. Writing operations, append data at the end of the 
      file. The file is created if it does not exist.
"r+" - Opens a file to update both reading and writing. The file must exist.
"w+" - Creates an empty file for both reading and writing.
"a+" - Opens a file for reading and appending.

Попробуйте использовать "r+" или "w +". После написания некоторого текста ваша позиция в файле будет двигаться вместе с текстом. Используйте перемотку (FILE* имя файла), чтобы переместить вашу позицию прямо в начало файла. Для получения дополнительной информации, связанной с обработкой файлов, я рекомендую проверить, что находится внутри библиотеки stdio: https://www.tutorialspoint.com/c_standard_library/stdio_h.htm

Другие вопросы по тегам