fflu sh () не работает как ожидалось - PullRequest
0 голосов
/ 11 января 2020

Я сейчас работаю над проектом, который мне нужен файл io. В этом проекте я часто читаю и пишу в файл. Но дело в том, что я ничего не могу прочитать из файла. Я попытался использовать fflu sh (), но это не похоже на работу. У меня есть пример кода, который демонстрирует то же поведение ниже.

#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
    FILE* fp = fopen("file.txt", "w+");
    fprintf(fp, "Test text");
    fflush(fp);

    char c = fgetc(fp);
    fclose(fp);
    cout << c << endl;
    return 0;
 }

Вместо c, являющегося 'T', как и ожидалось, я получаю неизвестный символ.

Я использую C Стиль io, потому что я хочу избежать накладных расходов на размер fstreams.

1 Ответ

1 голос
/ 11 января 2020

Похоже, указатель на файл указывает на конец файла, поэтому возвращаемое значение равно -1, отсюда и получается странный char. После fflush(); (ведь я считаю, что это не нужно, по крайней мере, для примера, который вы создаете), вы можете указать указатель на начало файла со смещением 0:

//...
fflush(fp);
fseek(fp, 0, SEEK_SET);
char c = getc(fp);
//...

Это вернет 84 ведьмы правильный код ASCII для символа T

...