From d269bc321bb1258a689a2495cdf0fc291f0b209f Mon Sep 17 00:00:00 2001 From: kachelto100370 Date: Wed, 29 Oct 2025 21:24:25 +0100 Subject: [PATCH] added kristin input.c code --- .gitignore | 1 + Start_Windows/input.c | 58 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 2120252..cc51e64 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ makefile/ .vscode/ *.exe Start_Linux/makefile +Start_Windows/makefile diff --git a/Start_Windows/input.c b/Start_Windows/input.c index ed77805..066a8bd 100644 --- a/Start_Windows/input.c +++ b/Start_Windows/input.c @@ -1,12 +1,54 @@ #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. - +// 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) -{ - -} \ No newline at end of file +int readWords(FILE *file, char words[][MAX_WORD_LEN], + unsigned int maxWordCount) { + + if (file == NULL) { + + perror("File couldn't be opened"); + } + + // zunächst fehlerhaften String einlesen und in anderem Array + // zwischenspeichern + + char fehlerhafterString[MAX_LINE_LEN]; + char *teiler = " ;,.\n"; + char *aktuellesWort; + int wortAnzahl = 0; + + while (fgets(fehlerhafterString, sizeof(fehlerhafterString), file) != + NULL && // während mit fgets alle Zeichen aus dem file eingelesen + // werden + wortAnzahl < maxWordCount) { + + aktuellesWort = + strtok(fehlerhafterString, teiler); // Erstes Wort mit strtok aus dem + // fehlerhaften String herauslösen + + while (aktuellesWort != NULL && + wortAnzahl < maxWordCount) { // while strtok nicht am Ende ist und + // noch Wörter in words passen + + strncpy(words[wortAnzahl], aktuellesWort, + sizeof(words[wortAnzahl]) - + 1); // mit strcpy das aktuelle Wort in words kopieren + words[wortAnzahl][sizeof(words[wortAnzahl]) - 1] = + '\0'; // Nullterminator mit sizeof des aktuellen Worts - 1 an Ende des + // Worts setzen + + wortAnzahl++; // Nächstes Wort + aktuellesWort = strtok(NULL, teiler); // Nächstes Token + } + } + + return wortAnzahl; // Anzahl der eingelesenen Wörter +} + + \ No newline at end of file