簡體   English   中英

添加到int會更改單獨的char數組嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM