我正在尝试编写一个程序,为 .wav 文件添加效果。
该计划应该:
读取 .wav 文件
操纵数据
我陷入了一些奇怪的函数问题fread()- 当我试图读取 4 个字节到我定义的字符数组(大小为 4 个字节)时 - 我得到了单词 + 垃圾。
如果我尝试以相同的方式读取 2 或 3 个字节 - 一切正常。
我尝试在两种情况下(当我读取 2/3 字节时与当我读取 4 字节时)用 while 循环打印数组的内容,直到 '\n' 而不是 printf("%s") - 我得到了相同的结果(第一种情况写字符串,第二种情况写字符串+垃圾)。另外,我写回标题并复制数据 - 创建的文件不是同一首歌!它确实打开了 - 所以标头很好,但数据是垃圾。我会很高兴听到一些关于可能原因的想法。我真的很困惑,请帮助我! 问题 - 输出的打印屏幕
fread不是为了读取字符串。它读取二进制数据。这意味着数据不会以空终止,也不会有任何其他终止。
fread返回读取的字节数。此后,数据将不会被初始化,并且必须被忽略。
如果要将数据视为字符串,则必须使用 null 自行终止它arr[count]=0。确保arr具有最小count+1容量以避免缓冲区溢出。