Как читать из файла, используя 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