fread()的奇怪行为

时间:2018-12-16 14:20:52

标签: c fread stdio

这是我的代码:

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 您能帮我解决这个问题吗?还是在计算机上复制代码以查看会发生什么?

1 个答案:

答案 0 :(得分:2)

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

fread将流视为文本。

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