#include #include #define MAX_WORDLENGTH 100 // für die maximale Wortlänge #define MAX_TEXT_LENGTH 1000 // für die maximale Textlänge int main() { char dateiname[256]; // Puffer für den Dateinamen, damit es nicht zu Pufferüberläufen kommt printf("Bitte gib den Dateinamen ein (z.B. text.txt oder Pfad): "); scanf("%255s", dateiname); // Dateinamen von Tastatur einlesen und Begrenzung auf 255 Zeichen schützt vor Pufferüberläufen FILE *file = fopen(dateiname, "r"); // Datei öffnen if (file == NULL) { perror("Fehler beim oeffnen der Datei"); // Überprüfen ob die Eingabe stimmt return 1; } int frequency[MAX_WORDLENGTH] = {0}; char text[MAX_TEXT_LENGTH]; int wordlength = 0; while (fgets(text, sizeof(text), file) != NULL) { // Datei zeilenweis lesen for (int i = 0; text[i] != '\0'; i++) { if (isalnum(text[i])) { //isalnum ueberprüft ob das es ein wort oder zahl ist also kein leerzeichen, satzzeichen wordlength++; // zaehlt die buchstaben in dem wort } else { if (wordlength > 0 && wordlength < MAX_WORDLENGTH) { //überprüft ob ein wort gezählt werden kann (überschreitet micht max Wortlänge) frequency[wordlength]++; //Erhöht die Häufigkeit für die aktuelle Wortlänge wordlength = 0; //Setzt den Zähler für die Wortlänge zurück für das nächste Wort } } } // Letztes Wort in der Zeile nicht vergessen if (wordlength > 0 && wordlength < MAX_WORDLENGTH) { frequency[wordlength]++; wordlength = 0; } } fclose(file); // Datei schließen // Ergebnis ausgeben printf("\nHaeufigkeitsverteilung der Wortlaengen:\n"); for (int i = 1; i < MAX_WORDLENGTH; i++) { //geht alle wortlängen durch if (frequency[i] > 0) { printf("Wortlaenge %d: %d\n", i, frequency[i]); // überprüft die häufigkeit } } return 0; }