54 lines
1.7 KiB
C

#include "input.h"
#include <ctype.h>
#include <string.h>
// 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) {
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
}