From f0bb20bab0eb72011c26ef35d23bde70ba3b4e74 Mon Sep 17 00:00:00 2001 From: Manuel Glock Date: Wed, 14 Oct 2026 14:32:21 +0200 Subject: [PATCH] =?UTF-8?q?Input.c=20angepasst=20und=20makefile=20=C3=A4nd?= =?UTF-8?q?erung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Startcode/input.c | 62 ++++++++++++++-------------------- Startcode/main.c | 3 -- Startcode/makefile | 8 ++++- Startcode/wordsalad_myversion | Bin 0 -> 35184 bytes TODO.md | 5 +-- 5 files changed, 34 insertions(+), 44 deletions(-) create mode 100755 Startcode/wordsalad_myversion diff --git a/Startcode/input.c b/Startcode/input.c index 7341859..7bdab7e 100644 --- a/Startcode/input.c +++ b/Startcode/input.c @@ -2,49 +2,39 @@ #include #include -// TODO: -// eine Funktion implementieren, die ein einzelnes Wort aus einer Textdatei (words.txt) einliest und als C-String zurückgibt. +#define DELIMITERS " ,;\t\r\n" // Read words from file and store in 'words' array int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) { char puffer[MAX_LINE_LEN]; - // Delemiter: Ich glaube \n ist nicht erlaubt da einzelne Buchstaben eingelesen werden - char *teiler = " ,;"; - char *token; + unsigned int wordCount = 0; - //counter für die Anzahl der eingelesenen Wörter - int wordCount = 0; - FILE *words_txt_speicherort; //Zeiger auf den Speicherort der word.txt Datei - - words_txt_speicherort = fopen("words.txt","r"); //word.txt öffnen - - if(words_txt_speicherort == NULL) //Abbruch falls words.txt nicht existieren würde + if(file == NULL || words == NULL) + return 0; + + //Liest die Datei Line by Line + while(wordCount < maxWordCount && fgets(puffer, MAX_LINE_LEN, file) != NULL) { - return -1; + //Trennt das erste Wort der Zeichenkette, abhängig von den Teilerbedingungen + char *token = strtok(puffer, DELIMITERS); + + //geht über das token und speichert sie einzeln in Uppercase + while(token != NULL && wordCount < maxWordCount) + { + unsigned int i = 0; + + while(token[i] != '\0' && i < MAX_WORD_LEN -1) + { + words[wordCount][i] = (char)toupper((unsigned char)token[i]); + i++; + } + words[wordCount][i] = '\0'; + wordCount++; + + token = strtok(NULL, DELIMITERS); + } } - fgets(puffer, MAX_LINE_LEN, words_txt_speicherort); //speichert alle Zeichen der words.txt datei in den speicher - - //Trennt das erste Wort der Zeichenkette, abhängig von den Teilerbedingungen - token = strtok(puffer, teiler); - - //Trennt den Rest der Wörter bis die Zeichenkette leer ist - while(token != NULL) { - words[wordCount][MAX_WORD_LEN] = token; - wordCount++; - token = strtok(NULL, teiler); - } - - // TODO: - // * Noch ein Post-Processor der Wörterliste um Füller zu entfernen (Oder in der Funktion) - // * Check für Überlänge? - // * Extra Funktion nach readWords in main.c evtl. - - //speichert nur das einzelne Word in das words array; Problem: Laufindex der global gespeichert werden müsste; wie springe ich beim 2ten Funktionsaufruf zum nächsten Wort - //mit strtok(NULL, delimiter) kann man weiterzerlegen :) - - - - int fclose(words_txt_speicherort); + return wordCount; } \ No newline at end of file diff --git a/Startcode/main.c b/Startcode/main.c index 7d5413e..03da755 100644 --- a/Startcode/main.c +++ b/Startcode/main.c @@ -33,9 +33,6 @@ int main(int argc, char *argv[]) wordCount = readWords(file, words, MAX_NUMBER_OF_WORDS); fclose(file); - // TODO: - // Post-Process words[][] nach den Requirements ../TODO.md - // Create the word salad by placing words into grid placedWords = createWordSalad(wordSalad, SALAD_SIZE, words, wordCount); diff --git a/Startcode/makefile b/Startcode/makefile index 7cf1d4c..41e3c91 100644 --- a/Startcode/makefile +++ b/Startcode/makefile @@ -28,6 +28,12 @@ wordsalad_initial: wordsalad: main.o input.o game.o graphicalGame.o $(BINARIES)/libraylib.a $(CC) $(CFLAGS) -o wordsalad main.o input.o game.o graphicalGame.o $(BINARIES)/libraylib.a $(LDFLAGS) +wordsalad_myversion: main.o input.o $(BINARIES)/libwordsalad.a $(BINARIES)/libraylib.a + $(CC) $(CFLAGS) -o wordsalad_myversion main.o input.o $(BINARIES)/libwordsalad.a $(BINARIES)/libraylib.a $(LDFLAGS) + +wordsalad_read: input.o $(BINARIES)/libwordsalad.a $(BINARIES)/libraylib.a + $(CC) $(CFLAGS) -o wordsalad_read input.o $(BINARIES)/libwordsalad.a $(BINARIES)/libraylib.a $(LDFLAGS) + main.o: $(codefolder)/main.c $(CC) -c $(CFLAGS) $(codefolder)/main.c @@ -55,5 +61,5 @@ clean: ifeq ($(OS),Windows_NT) del /f *.o *.exe else - rm -f *.o wordsalad $(TEST_BIN) + rm -f *.o wordsalad wordsalad_myversion $(TEST_BIN) endif \ No newline at end of file diff --git a/Startcode/wordsalad_myversion b/Startcode/wordsalad_myversion new file mode 100755 index 0000000000000000000000000000000000000000..b9ec87dad1ed2cd4ed2c93df587d1710866e508e GIT binary patch literal 35184 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 IS>MP10h4PKCjbBd literal 0 HcmV?d00001 diff --git a/TODO.md b/TODO.md index e7737c7..2d0c2d3 100644 --- a/TODO.md +++ b/TODO.md @@ -32,12 +32,9 @@ ### Requirements * Eine .txt Datei kann eingelesen werden - * Es wird nach den Trennzeichen: , ; . : - gefiltert um zu trennen + * Es wird nach den Trennzeichen: , ; . : gefiltert um zu trennen * Es sind nur Buchstaben erlaubt, keine Zahlen, Sonderzeichen, etc. * Es werden beliebig viele Füller entfernt bis keine mehr enthalten sind. - * Füller sind Leading oder Trailing: - * " " (Leerzeichen) - * /n * Füller im Wort müssen erkannt werden und Programm beenden. * Wörter werden gleichmäßig klein ODER großgeschrieben werden und so weiterhin gespeichert werden. * Wenn ein eingelesenes Wort länger als das Grid in Horizontal oder Vertikal ist, bricht das Programm ab