我正在尝试编写一个将效果添加到.wav文件的程序。
程序应:
读取.wav文件
处理数据
我在fread()
函数上有些奇怪的事情-
当我尝试读取我定义的char数组的4个字节(大小为4个字节)时,我得到了+垃圾字。
如果我尝试以相同的方式读取2或3个字节-一切正常。
在两种情况下(当我读取2/3字节与读取4字节时),我都尝试使用while循环打印数组的内容,直到'\ n'而不是printf(“%s”)-我得到了结果相同(在第一种情况下写字符串,在第二种情况下写字符串+垃圾)。 另外,我还写了标头,只是复制数据-创建的文件不是同一首歌! 它确实是打开的-所以标题很好,但是数据是垃圾。 我很高兴听到一些想法,可能是由于这个原因。我真的很坚持,请帮助我! The problem - printscreen of the output
答案 0 :(得分:3)
fread
不能读取字符串。它读取二进制数据。这意味着数据将不会以null终止,也不会有任何其他终止。
arr[count]=0
返回读取的字节数。此后,将不会初始化数据,而必须将其忽略。
如果要将数据视为字符串,则必须使用{{1}}自己将其终止为null。确保arr至少具有count + 1个容量,以避免缓冲区溢出。
答案 1 :(得分:0)
也许为您的fmt_chunk_marker
保留5个字节。这样就可以将4个字符的字符串表示为以N结尾的C字符串。读取的最后一个字符之后的字节应设置为空字符('\0'
)。