Guten Abend,
ich habe ein Programm zu schreiben, dass die Bestandteile des Headers einer wav Datei über printf ausgibt. Insgesamt klappt das auch recht gut. Bloß folgen z.B. auf RIFF zusätzliche Zeichen und es wird WAVEfmt, statt WAVE ausgegeben.
Woran liegt das?

Vielen Dank und freundliche Grüße,
Thomas
ich habe ein Programm zu schreiben, dass die Bestandteile des Headers einer wav Datei über printf ausgibt. Insgesamt klappt das auch recht gut. Bloß folgen z.B. auf RIFF zusätzliche Zeichen und es wird WAVEfmt, statt WAVE ausgegeben.
Woran liegt das?
C:
#include <stdio.h>
#include <stdlib.h>
struct Wav {
char ChunkID[4];
int ChunkSize;
char Format[4];
char subChunk1ID[4];
int subChunk1Size;
short audioFormat;
short numChannels;
int sampleRate;
int byteRate;
short blockAlign;
short bitsPerSample;
char subChunk2ID[4];
int subChunk2Size;
};
union ReadWav {
struct Wav header;
char c[44];
};
int main()
{
union ReadWav u;
char i;
FILE *datei;
in=fopen("test.wav","rb");
for(i=0; i<43; i++){
u.c[i]=fgetc(datei);
}
printf("ChunkID: %s\n",u.header.ChunkID);
printf("ChunkSize: %d\n",u.header.ChunkSize);
printf("Format: %s\n", u.header.Format);
printf("subChunk1ID: %s\n", u.header.subChunk1ID);
printf("subChunk1Size: %d\n", u.header.subChunk1Size);
printf("audioFormat: %d\n", u.header.audioFormat);
printf("numChannels: %d\n", u.header.numChannels);
printf("sampleRate: %d\n", u.header.sampleRate);
printf("byteRate: %d\n", u.header.byteRate);
printf("blockAlign: %d\n", u.header.blockAlign);
printf("bitsPerSample: %d\n", u.header.bitsPerSample);
printf("subChunk2ID: %s\n", u.header.subChunk2ID);
printf("subChunk2Size: %d\n", u.header.subChunk2Size);
return 0;
}

Vielen Dank und freundliche Grüße,
Thomas