0

そのため、wav ファイルのヘッダーを読み取ろうとしているのですが、何らかの理由でその一部しか読み取れません。

この構造を使用してデータを保存します:

struct WaveHeaderType
{
    char chunkId[4];
    unsigned long chunkSize;
    char format[4];
    char subChunkId[4];
    unsigned long subChunkSize;
    unsigned short audioFormat;
    unsigned short numChannels;
    unsigned long sampleRate;
    unsigned long bytesPerSecond;
    unsigned short blockAlign;
    unsigned short bitsPerSample;
    char dataChunkId[4];
    unsigned long dataSize;
};

ファイルを読み取るためのこのコード:

WaveHeaderType waveFileHeader;

fread(&waveFileHeader, sizeof(waveFileHeader), 1, filePtr);

この後、chunkId、chunkSize、format、および subChunkId のみが値を持ち、残りは null になります。私は何を間違っていますか?それとも、たまたま破損した wav ファイルを持っているのでしょうか? (kmplayerでwavファイルを問題なく再生できます)

4

5 に答える 5

0

上記の「ポインターのサイズを取得することは、構造体のサイズと同じではありません」とunsigned longは別に、ファイルに保存される(またはファイルから読み取られる)はずのデータ構造を見ると、私は多くのことを心配します。これは、コードを 32 ビット環境から 64 ビット環境に移動する場合 (または、あるコンパイラから別のコンパイラに移動する場合、または同じコンパイラを使用しているが別のプロセッサ タイプを使用する場合) に問題が発生するタイプのものです。

uint8_tuint16_t、などのサイズ定義型を使用する必要がありますuint32_t

于 2013-06-20T13:31:40.600 に答える