我想要寫一個陣列含有16位整數作爲原始二進制到一個文件,並用下面的例子中已經嘗試時:開銷數據寫入到一個二進制文件
# define __int8_t_defined
__intN_t (8, __QI__);
__intN_t (16, __HI__);
__intN_t (32, __SI__);
__intN_t (64, __DI__);
int main(int argc, char *argv[])
{
FILE * rawf;
rawf = fopen("./rawPcm","wb");
int16_t buff[] = {0,0,0};
fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
fclose(rawf);
}
然而,輸出不只包含零更。
$ hexdump -v rawPcm
0000000 0000 0000 0000 85fd 0804 0001 0000 0000
0000010 0000 85fd 0804 0001
0000018
它爲每一個fwrite(buff,sizeof(int16_t), sizeof(buff),rawf);
而我希望得到的只有0000 0000 0000
寫道:0000 0000 0000 85fd 0804 0001
。
附加數據代表什麼85fd 0804 0001
以及如何防止其發生?
(幾乎)最小和完整的例子,觀察到的輸出,預期的輸出。你,先生,應該得到一枚獎章。 :-D – DevSolar
良好的舊緩衝區溢出:) – Luaan