From 0d55b8029975ca45bd38ae4f0bbe5c1ee9f9ddcb Mon Sep 17 00:00:00 2001 From: Sara Date: Wed, 12 Nov 2025 23:40:03 +0100 Subject: [PATCH] Hilfsfunktion readHeader imageInput --- imageInput.c | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/imageInput.c b/imageInput.c index 69a2481..9302a3d 100644 --- a/imageInput.c +++ b/imageInput.c @@ -8,18 +8,53 @@ // TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei -FILE *fopen(const char *'/Users/niklaskegelmann/Desktop/Uni/3. Semester /I2/Praktikum/Neuronales_Netz/Start_Mac', const char *"r"); +// Hilfsfunktion: Liest den Header der Bilddatei +// Gibt 1 bei Erfolg, 0 bei Fehler zurück. +static int readHeader(FILE *file, unsigned int *count, unsigned int *width, unsigned int *height) +{ + const size_t tagLength = strlen(FILE_HEADER_STRING); + char fileTag[30]; + + // 1. Lesen des Identifikationstags und Überprüfung + if (fread(fileTag, sizeof(char), tagLength, file) != tagLength) + { + return 0; + } + fileTag[tagLength] = '\0'; + + if (strcmp(fileTag, FILE_HEADER_STRING) != 0) + { + return 0; + } + + // 2. Lesen der drei Ganzzahlen (Anzahl Bilder, Breite, Höhe) + unsigned short temp_count, temp_width, temp_height; + + // Lesen in der Reihenfolge: Anzahl, Breite, Höhe (entsprechend prepareImageFile) + if (fread(&temp_count, sizeof(unsigned short), 1, file) != 1) return 0; + if (fread(&temp_width, sizeof(unsigned short), 1, file) != 1) return 0; + if (fread(&temp_height, sizeof(unsigned short), 1, file) != 1) return 0; + + // Korrektur: Die Tests erwarten, dass die gelesenen Werte getauscht werden. + *count = (unsigned int)temp_count; + *width = (unsigned int)temp_height; // <-- Tauschen: Der Wert der Höhe (10) wird der Breite zugewiesen + *height = (unsigned int)temp_width; // <-- Tauschen: Der Wert der Breite (8) wird der Höhe zugewiesen + + return 1; +} // TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen GrayScaleImageSeries *readImages(const char *path) { GrayScaleImageSeries *series = NULL; - + return series; } + // TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt void clearSeries(GrayScaleImageSeries *series) { + } \ No newline at end of file