TEI2-Aufgabenblatt2/Aufgabenblatt2_Aufgabe2.c

68 lines
1.8 KiB
C

#include <stdio.h>
#include <stdint.h>
// Definition Wav struct
struct Wav
{
char chunkID[4];
uint32_t chunkSize;
char format[4];
char subchunk1ID[4];
uint32_t subchunk1Size;
uint16_t audioFormat;
uint16_t numChannels;
uint32_t sampleRate;
uint32_t byteRate;
uint16_t blockAlign;
uint16_t bitsPerSample;
char subchunk2ID[4];
uint32_t subchunk2Size;
};
// Union zum Auslesen des Wav struct
union ReadWav
{
struct Wav header;
char c[44];
};
int main()
{
char inputFileName[260];
printf("Input file name: ");
scanf("%s", inputFileName);
// FILE pointer auf Datei zum einlesen
FILE *inputFile = fopen(inputFileName, "r");
if (!inputFile)
{
printf("Input file not found/corrupted!\n");
return 1;
}
// Wav-Header über char Array einlesen und Freigabe von FILE pointer
union ReadWav wavData;
fread(wavData.c, sizeof(wavData.c), 1, inputFile);
fclose(inputFile);
// Headerdaten über struct ausgeben
printf("ChunkID: %.4s\n", wavData.header.chunkID);
printf("ChunkSize: %d bytes\n", wavData.header.chunkSize);
printf("Format: %.4s\n", wavData.header.format);
printf("Subchunk1ID: %.4s\n", wavData.header.subchunk1ID);
printf("Subchunk1Size: %d bytes\n", wavData.header.subchunk1Size);
printf("AudioFormat: %d\n", wavData.header.audioFormat);
printf("NumChannels: %d\n", wavData.header.numChannels);
printf("SampleRate: %d Hz\n", wavData.header.sampleRate);
printf("ByteRate: %d bytes/second\n", wavData.header.byteRate);
printf("BlockAlign: %d bytes\n", wavData.header.blockAlign);
printf("BitsPerSample: %d\n", wavData.header.bitsPerSample);
printf("Subchunk2ID: %.4s\n", wavData.header.subchunk2ID);
printf("Subchunk2Size: %d bytes\n", wavData.header.subchunk2Size);
return 0;
}