From ed3cb335749725f5d4d9d6ece5515ce98c044c55 Mon Sep 17 00:00:00 2001 From: Alex Meinke Date: Thu, 5 Nov 2026 03:03:25 +0100 Subject: [PATCH] fertig teil alex --- Startcode/input.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/Startcode/input.c b/Startcode/input.c index ed77805..f08c8ce 100644 --- a/Startcode/input.c +++ b/Startcode/input.c @@ -4,9 +4,63 @@ // TODO: // eine Funktion implementieren, die ein einzelnes Wort aus einer Textdatei (words.txt) einliest und als C-String zurückgibt. +// Liest eine Zeile und uns schreibt oder speichert Sie im buffer. Unserre Rückgabe wird sein: A) entweder buffer (als C-String) oder NULL, wenn kein Wort mehr gelesen werden kann. + +static char *readWord(FILE *file, char *buffer, unsigned int bufferSize) +{ + char line[MAX_LINE_LEN]; + unsigned int length = 0; + unsigned int i = 0; + + if (file == NULL || buffer == NULL || bufferSize == 0) + { + return NULL; + } + + // Zeile für Zeile lesen, bis ein nicht-leeres Wort gefunden ist + while (fgets(line, MAX_LINE_LEN, file) != NULL) + { + // Zeilenumbruch, Wagenrücklauf und Leerzeichen am Ende entfernen + length = strlen(line); + while (length > 0 && (line[length - 1] == '\n' || + line[length - 1] == '\r' || + line[length - 1] == ' ')) + { + length--; + line[length] = '\0'; + } + + // Leere Zeilen überspringen + if (length > 0) + { + // Sicher in den Zielpuffer kopieren und terminieren + strncpy(buffer, line, bufferSize - 1); + buffer[bufferSize - 1] = '\0'; + + // In Großbuchstaben umwandeln (das Spielfeld wird mit 'A'-'Z' gefüllt) + for (i = 0; buffer[i] != '\0'; i++) + { + buffer[i] = toupper((unsigned char)buffer[i]); + } + return buffer; + } + } + + return NULL; // Dateiende erreicht +} + // Read words from file and store in 'words' array + int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) { +unsigned int count = 0; + // Wörter lesen, bis das Array voll ist oder die Datei zu Ende ist + while (count < maxWordCount && readWord(file, words[count], MAX_WORD_LEN) != NULL) + { + count++; + } + + return count; } \ No newline at end of file