fread() 的奇怪行为

Strange behaviour of 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。返回值为1433。

当SAMPLES为60772时,数组matlabIdeal被填充到第59391个值。连续值为0。返回值为1433。

当SAMPLES为30772时,数组matlabIdeal被填充到第30719个值。连续值为0。返回值为1433。

fread()填充的值是正确的,但突然变成了0。 这是 fread 读取的二进制文件:https://ufile.io/sf85m 你能帮我解决这个问题吗?或者在您的计算机上重现代码以查看会发生什么?

这是因为您没有打开读取二进制数据的文件。

fread 将流视为文本。

您应该使用 "rb" 模式打开文件。