forked from freudenreichan/info2Praktikum-Wortsalat
fertig teil alex
This commit is contained in:
1 parent
5d9fbdf925
commit
ed3cb33574
1 file changed
+54
@@ -4,9 +4,63 @@
|
||||
|
||||
// TODO:
|
||||
// eine Funktion implementieren, die ein einzelnes Wort aus einer Textdatei (words.txt) einliest und als C-String zurückgibt.
|
||||
// Liest eine Zeile und uns schreibt oder speichert Sie im buffer. Unserre Rückgabe wird sein: A) entweder buffer (als C-String) oder NULL, wenn kein Wort mehr gelesen werden kann.
|
||||
|
||||
static char *readWord(FILE *file, char *buffer, unsigned int bufferSize)
|
||||
{
|
||||
char line[MAX_LINE_LEN];
|
||||
unsigned int length = 0;
|
||||
unsigned int i = 0;
|
||||
|
||||
if (file == NULL || buffer == NULL || bufferSize == 0)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Zeile für Zeile lesen, bis ein nicht-leeres Wort gefunden ist
|
||||
while (fgets(line, MAX_LINE_LEN, file) != NULL)
|
||||
{
|
||||
// Zeilenumbruch, Wagenrücklauf und Leerzeichen am Ende entfernen
|
||||
length = strlen(line);
|
||||
while (length > 0 && (line[length - 1] == '\n' ||
|
||||
line[length - 1] == '\r' ||
|
||||
line[length - 1] == ' '))
|
||||
{
|
||||
length--;
|
||||
line[length] = '\0';
|
||||
}
|
||||
|
||||
// Leere Zeilen überspringen
|
||||
if (length > 0)
|
||||
{
|
||||
// Sicher in den Zielpuffer kopieren und terminieren
|
||||
strncpy(buffer, line, bufferSize - 1);
|
||||
buffer[bufferSize - 1] = '\0';
|
||||
|
||||
// In Großbuchstaben umwandeln (das Spielfeld wird mit 'A'-'Z' gefüllt)
|
||||
for (i = 0; buffer[i] != '\0'; i++)
|
||||
{
|
||||
buffer[i] = toupper((unsigned char)buffer[i]);
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL; // Dateiende erreicht
|
||||
}
|
||||
|
||||
|
||||
// Read words from file and store in 'words' array
|
||||
|
||||
int readWords(FILE *file, char words[][MAX_WORD_LEN], unsigned int maxWordCount)
|
||||
{
|
||||
unsigned int count = 0;
|
||||
|
||||
// Wörter lesen, bis das Array voll ist oder die Datei zu Ende ist
|
||||
while (count < maxWordCount && readWord(file, words[count], MAX_WORD_LEN) != NULL)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
Reference in new issue
Block a user