Запись в файл с использованием fputs - PullRequest
0 голосов
/ 07 июня 2019

У меня есть следующий простой код:

#include <stdio.h>

int main(){
        char buffer[20] = "abc";
        FILE *pFile;

        pFile = fopen("myfile1.txt", "r+");
        fputs("def", pFile);
        fgets(buffer, 20, pFile);
        printf("buffer content: %s\n", buffer);

        fclose(pFile);
        return 0;
}

вывод: buffer content: abc, а не def, как это было только что записано в файл.Может кто-нибудь объяснить, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

Если вы хотите читать в случайном порядке, сначала вам нужно указать подпрограммы чтения файлов, с которых вы хотите начать.

Используйте fseek для этого.

Например: fseek(pFile, 0, SEEK_SET), прежде чем пытаться получить что-то с fgets.

1 голос
/ 07 июня 2019

От cppreference :

В режиме обновления ('+') могут выполняться как ввод, так и вывод, но за выводом не может следовать ввод без промежуточного вызова fflush, fseek, fsetpos или rewind, а за вводом не может следовать вывод без промежуточного вызовите fseek, fsetpos или rewind, если операция ввода не встретила конец файла.

Вы ничего не делаете между написанием и чтением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...