diff --git a/Start_Linux/game.c b/Start_Linux/game.c index b51d739..15157c4 100644 --- a/Start_Linux/game.c +++ b/Start_Linux/game.c @@ -25,6 +25,7 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi } // Platzieren der Wörter + unsigned int placedWords = 0; for (unsigned int w = 0; w < wordCount; ++w) { const char *word = words[w]; size_t wordLen = strlen(word); @@ -34,7 +35,7 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi int placed = 0; for (int attempts = 0; attempts < MAX_RAND_TRIES_PER_WORD && !placed; ++attempts) { - int vertical = rand() % 2; // 0=horizontal, 1=vertical + int vertical = rand() % 2; // 0=horizontal, 1=vertikal unsigned int row, col; if (vertical) { @@ -69,9 +70,8 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi placed = 1; } - if (!placed) { - // Ein Wort konnte nicht platziert werden, Abbruch möglich - return 0; + if (placed) { + placedWords++; } } @@ -84,7 +84,7 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi } } - return 1; + return placedWords; } // Prints the word salad to console diff --git a/Start_Linux/game.o b/Start_Linux/game.o index cc99743..1482182 100644 Binary files a/Start_Linux/game.o and b/Start_Linux/game.o differ diff --git a/Start_Linux/input.c b/Start_Linux/input.c index 1f64a2d..9c78bfb 100644 --- a/Start_Linux/input.c +++ b/Start_Linux/input.c @@ -1,6 +1,7 @@ #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. @@ -11,19 +12,23 @@ char* readWord(FILE *file) int c; // Variable für jedes gelesene Zeichen // Whitespace und Delimiters überspringen - while((c = fgetc(file)) != EOF && (isspace(c) || c == ',' || c == ';' || c == '.')); + while ((c = fgetc(file)) != EOF && (isspace((unsigned char)c) || c == ',' || c == ';' || c == '.')); + + if (c == EOF) { + return NULL; + } // Buchstaben einlesen bis nächstes whitespace/Delimiter/EOF - while(c != EOF && !isspace(c) && c != ',' && c != ';' && c != '.' && index < MAX_WORD_LEN - 1) //-1 wegen Nullterminator + while (c != EOF && !isspace((unsigned char)c) && c != ',' && c != ';' && c != '.' && index < MAX_WORD_LEN - 1) //-1 wegen Nullterminator { - word[index++] = (char)toupper(c); // Konvertiere zu Großbuchstaben + word[index++] = (char)toupper((unsigned char)c); // Konvertiere zu Großbuchstaben c = fgetc(file); } word[index] = '\0'; // Nullterminator (= Ende String) - // Leere überspringen - if(index == 0) + if (index == 0) { return NULL; + } return strdup(word); // Rückgabe string, dynamisch allokiert da Zeiger auf lokalen Puffer zurückgegeben } diff --git a/Start_Linux/input.o b/Start_Linux/input.o index d85fd7b..d445308 100644 Binary files a/Start_Linux/input.o and b/Start_Linux/input.o differ diff --git a/Start_Linux/runTests b/Start_Linux/runTests index e363e0d..e8796ef 100755 Binary files a/Start_Linux/runTests and b/Start_Linux/runTests differ