【发布时间】:2015-10-31 22:28:28
【问题描述】:
提前感谢您的帮助。
我正在尝试调用一个函数,该函数将从我刚刚创建的正弦波二进制文件中读回日期。该文件已在 main 函数中以 w+b 打开。我想将数据复制到我的缓冲区数组,然后打印出来。
end_time 是文件中的样本总数。样本被写成浮点数。 Code Blocks 没有给出任何错误,但是程序到了这个时候就崩溃了,我不知道为什么。
void printwave(FILE *fp, int end_time)
{
int i;
float buffer[end_time];
fseek(fp, 0, SEEK_SET);
for(i=0; i==end_time; i++)
{
fread(buffer, sizeof(float), 1, fp);
printf("%d\t%.2f\n", i, buffer[i]);
}
}
感谢您的帮助, 安迪。
【问题讨论】:
-
'for' 条件错误。应该是 i
-
发布的代码(如果
for()语句已更正)将整个文件读入 buffer[] 数组。这是完全没有必要的。更好的是,在一个循环中,读取一个浮点数,打印一个浮点数,等等 -
在调用
fread()函数时,检查返回值(本例中应为1),确保操作成功。调用fseek()函数时,检查返回值(本例中应为0),确保操作成功。