C - Использование fget c в файле записи - PullRequest
0 голосов
/ 03 апреля 2020

Скажем, у нас есть указатель файла, подобный этому:

FILE *output = fopen("test.out", "w");

После записи в него я хочу прочитать его, используя fget c

Однако, когда я делаю:

char c1 = fgetc(output);

и затем я распечатываю c1, я получаю, что c1 равен -1, что означает, что в fget c произошла ошибка. Это потому, что я открыл файл с помощью "W"?

Как я могу читать и писать из одного и того же файла в одной и той же функции?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2020

Если вы хотите иметь возможность как читать, так и записывать файл, вы должны открыть его в режиме записи / обновления (ie передать «w +» аргументу режима вместо просто «w»)

Также обязательно выполните frewind () или fseek () перед попыткой чтения из файла, в противном случае вы будете пытаться читать после конца данных файла.

1 голос
/ 03 апреля 2020

Вы не можете читать из файла только для записи. Вместо этого откройте файл для доступа на чтение / запись, используя "w+".

Кроме того, после записи в файл необходимо выполнить поиск в обратном направлении с помощью fseek(), прежде чем вы сможете прочитать то, что ранее написали.

...