diff --git a/Start_Mac/input.c b/Start_Mac/input.c index ed77805..45d76df 100644 --- a/Start_Mac/input.c +++ b/Start_Mac/input.c @@ -4,9 +4,41 @@ // TODO: // eine Funktion implementieren, die ein einzelnes Wort aus einer Textdatei (words.txt) einliest und als C-String zurückgibt. - +/** + * @param file Zeiger auf die geöffnete Datei + * @param words 2D-Array zum Speichern der Wörter + * @param maxWordCount Maximale Anzahl von Wörtern, die eingelesen werden sollen + * @return Anzahl der eingelesenen Wörter + */ // Read words from file and store in 'words' array int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount) { - + if (file == NULL || words == NULL || maxWordCount == 0) { + return 0; + } + + int wordCount = 0; + char line[MAX_LINE_LEN]; + + // Zeilen einlesen + while (wordCount < maxWordCount && fgets(line, MAX_LINE_LEN, file) != NULL) { + // Zeile in Wörter aufteilen (Trennzeichen: Leerzeichen, Komma, Semikolon, Newline) + char *token = strtok(line, " ,;\t\n\r"); + + while (token != NULL && wordCount < maxWordCount) { + // Prüfen ob Token nicht leer ist + if (strlen(token) > 0 && strlen(token) < MAX_WORD_LEN) { + // Wort kopieren und in Großbuchstaben umwandeln + strcpy(words[wordCount], token); + for (int i = 0; words[wordCount][i] != '\0'; i++) { + words[wordCount][i] = toupper((unsigned char)words[wordCount][i]); + } + wordCount++; + } + // Nächstes Wort + token = strtok(NULL, " ,;\t\n\r"); + } + } + + return wordCount; } \ No newline at end of file diff --git a/Start_Mac/runTests b/Start_Mac/runTests new file mode 100755 index 0000000..17417bb Binary files /dev/null and b/Start_Mac/runTests differ