From 4b028daa2ded314d7e144b8bcac8e3f8d7e2bd2e Mon Sep 17 00:00:00 2001 From: Sebastian Korinek Date: Fri, 31 Oct 2025 11:04:33 +0100 Subject: [PATCH] INPUT komplett fertig, nur noch 3 Fehler beim Test, Rest muss in game.c gaendert werden --- Start_Mac/input.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Start_Mac/input.c b/Start_Mac/input.c index 1d8cdfc..73c70cd 100644 --- a/Start_Mac/input.c +++ b/Start_Mac/input.c @@ -1,7 +1,7 @@ #include "input.h" #include #include - +#include //sicherstellen, dass FILE deklariert ist // TODO: // eine Funktion implementieren, die ein einzelnes Wort aus einer Textdatei (words.txt) einliest und als C-String zurückgibt. @@ -11,23 +11,22 @@ int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) unsigned int count = 0; char buffer[256]; // temporärer Speicher für Zeilen - // Solange Zeilen vorhanden sind - while (fgets(buffer, sizeof(buffer), file) != NULL) + // zusätzliche Bedingung "count < maxWordCount" + while (count < maxWordCount && fgets(buffer, sizeof(buffer), file) != NULL) { + // gleiche Trennzeichen, aber Formatierung beibehalten char *token = strtok(buffer, " \t\r\n.,;:!?()[]{}\"'"); // Trennzeichen while (token != NULL) { - // Sicherheitscheck: Nicht über maxWordCount hinausgehen if (count >= maxWordCount) - return count; + break; // Sicherheitsabbruch auch hier - // Nur gültige Wörter übernehmen - // (z. B. alles in Kleinbuchstaben) + // toupper(), um Großbuchstaben zu erzwingen for (int i = 0; token[i]; i++) - token[i] = tolower((unsigned char)token[i]); + token[i] = toupper((unsigned char)token[i]); - // In words[count] kopieren + // sicheres Kopieren ins Zielarray strncpy(words[count], token, MAX_WORD_LEN - 1); words[count][MAX_WORD_LEN - 1] = '\0'; // String terminieren count++;