From 17f86eeb71373c6982428e00874308bede975c53 Mon Sep 17 00:00:00 2001 From: Alexei Date: Fri, 7 Nov 2025 18:27:36 +0100 Subject: [PATCH] test 11 --- Start_Windows/input.c | 43 ++++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/Start_Windows/input.c b/Start_Windows/input.c index 025ba18..d690443 100644 --- a/Start_Windows/input.c +++ b/Start_Windows/input.c @@ -1,38 +1,35 @@ #include "input.h" #include #include -#include // TODO: // eine Funktion implementieren, die ein einzelnes Wort aus einer Textdatei (words.txt) einliest und als C-String zurückgibt. // Read words from file and store in 'words' array -int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) { - char zeile[MAX_LINE_LEN]; - char* teiler = ".;, "; //Trennung zwischen den Wörtern einer Zeile - int wordCount = 0; - char* token; // Einzelwort aus Zeile - while(fgets(zeile, MAX_LINE_LEN, file)!=NULL) //Zeilenweises einlesen +int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) +{ + char puffer[MAX_LINE_LEN]; //Array für eingelesene Zeile + int counter = 0; //Zähler für Anzahl eingelesener Wörter + int i; + + while(fgets(puffer, MAX_LINE_LEN-1, file) != NULL && counter < maxWordCount) { - for (int i = 0; i < MAX_LINE_LEN; i++) + char *word_parts = strtok(puffer, ",;\n\t/. "); //Wörter aufteilen + + while(word_parts != NULL && counter < maxWordCount) { - if (zeile[i] >= 'a'&&zeile[i] <= 'z') //Ersetzen aller Kleinbuchstaben in Großbuchstaben + // Kopiere das Wort in words-Array + strncpy(words[counter], word_parts, MAX_WORD_LEN - 1); + words[counter][MAX_WORD_LEN - 1] = '\0'; + + // Alles in Großbuchstaben umwandeln + for(i = 0; words[counter][i] != '\0'; i++) { - zeile[i]=zeile[i]-32; //ASCII-Code -32 entspricht dem jeweiligen Großbuchstaben + words[counter][i] = toupper(words[counter][i]); } - if (zeile[i] == '\n') - { - zeile[i] = '\0'; //Ende der Zeile = String Ende - break; - } - } - token = strtok(zeile,teiler); - while(token != NULL && wordCount < maxWordCount) - { - strcpy(words[wordCount],token);//Trennen der Wörter in einer Zeile und kopieren in 2D Array "untereinander" - token = strtok(NULL,teiler); - wordCount++; + counter++; // Wort eingelesen, Wortzähler erhöhen + word_parts = strtok(NULL, ",;\n\t/. "); //NULL für Zeiger angeben } } - return wordCount; + return counter; } \ No newline at end of file