Странное поведение fread ()

Это мой код:

FILE* fLeftResult = fopen("C:/Users/Vincenzo/Desktop/unina/SOC/progetto esame/elaborazione fir/ResultLowLeft.bin","r+");
short output;
short matlabIdeal[SAMPLES+1] = {0};
size_t returnValue= fread(matlabIdeal, sizeof(short), SAMPLES, fLeftResult);

Когда SAMPLES - 6077, массив matlabIdeal заполняется до 4095-го значения. Последовательные значения равны 0. А returnValue - 1433.

Когда SAMPLES 60772, массив matlabIdeal заполняется до 59391-го значения. Последовательные значения равны 0. А returnValue - 1433.

Когда SAMPLES равно 30772, массив matlabIdeal заполняется до 30719-го значения. Последовательные значения равны 0. А returnValue - 1433.

Значения, которые заполняет fread (), верны, но внезапно они стали 0. Это двоичный файл, который читает fread: https://ufile.io/sf85m Вы можете мне помочь с этой проблемой? Или воспроизвести код на своем компьютере, чтобы посмотреть, что произойдет?


person Vincenzo    schedule 16.12.2018    source источник


Ответы (1)


Это потому, что вы не открывали файл для чтения двоичных данных.

fread обрабатывает поток как текст.

Вы должны открыть файл в режиме «rb».

person Tyler Durden    schedule 16.12.2018