[英]Adding to an int alters a separate char array?
我正在嘗試解析.wav文件頭。 如果刪除chunk_size +=...
行,則得到預期的結果: RIFF
,但是一旦添加該行,便得到RIFFÄÿÿÿ
。 為什么每個添加到chunk_size
值顯然都“附加”到chunk_id
? chunk_id
如何具有四個以上的元素? 關於數組或二進制數據,我不了解一些基本知識嗎? 在char數組上使用cout
是否不合適?
struct Wave
{
Wave (FILE* file) {
char header[44];
uint size = fread(header, sizeof(char), 44, file);
chunk_size = 0;
for (uint i = 0; i < 4; i ++) {
chunk_id[i] = header[i];
chunk_size += header[i + 4] * pow(16, i);
}
cout << chunk_id;
}
char chunk_id[4];
uint chunk_size;
char format[4];
...
...
...
};
cout << chunk_id;
僅當chunk_id
為null終止時工作。 由於它不在您的程序中,因此該程序具有未定義的行為。
將chunk_id
為5個元素的數組,並確保在構造函數中將其終止為null。
Wave (FILE* file) {
char header[44];
uint size = fread(header, sizeof(char), 44, file);
chunk_size = 0;
for (uint i = 0; i < 4; i ++) {
chunk_id[i] = header[i];
chunk_size += header[i + 4] * pow(16, i);
}
chunk_id[4] = '\0';
cout << chunk_id;
}
char chunk_id[5];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.