Проблема с чтением файла - PullRequest
       1

Проблема с чтением файла

1 голос
/ 12 сентября 2011

У меня есть этот двоичный файл с отображением правильного значения при открытии файла с помощью HexView.

4c 60 02 aa b4 c2 d1 e3 1a 01 00 00 8c 01 00 00 f5 01 00 00 52 02 0000 bd 02 00 00 20 03 00 00 32 03 00 00 59 03 00 00

Когда я использую fread для чтения 40-байтовых данных в буфер символов, это не удалось.Начиная с 9-го байта, все считанные данные будут 0x00.

int main()
{
    FILE *stream;
    char flag[40]={0};
    size_t numread = 0;
    UINT theme = 0;

    if ((stream = fopen("alignment.bin", "r")) != NULL)
    {
        numread = fread(&flag, 1, 40, stream);

        fclose(stream);
    }
    else
    {
        cout << "File open failed" << endl;
    }
    system ("pause");
    return 0;
}

Ответы [ 2 ]

9 голосов
/ 12 сентября 2011

Попробуйте использовать "rb" вместо "r". Возможны странные проблемы с форматированием текста.

Указание b делает его читаемым в двоичном формате без форматирования.

0 голосов
/ 12 сентября 2011

0x1A == 26 == ctrl-Z == EOF.

Если вы читаете в текстовом режиме, поток считает, что поток завершен после этой точки (то, что следует за «мусором для других передач»).

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