Wörter und Sätze in einer Datei zählen



  • Das mit dem Zitieren klappt schon sehr, sehr gut. Du lernst bestimmt dann auch bald das mit dem Verstehen.



  • Muß sagen ich kann dem was Frank sagt teilweise echt zustimmen.In erster Linie ist sein Programm für mich als Einsteiger auch besser nachzuvollziehen.
    Das mit dem Zitieren klappt schon sehr, sehr gut. Du lernst bestimmt dann auch bald das mit dem Verstehen.
    Ich glaube auch eher das das Programm in einer bestehenden txt suchen soll (So steht es zumindest im Text).



  • @Daniel E.
    Wer lesen kann ist klar im Vorteil.
    *INT_MAX Leer- bzw Satzzeichen auftauchen
    *
    Den Text will ich sehen. 😮



  • Original erstellt von <Newbie>:
    Muß sagen ich kann dem was Frank sagt teilweise echt zustimmen.In erster Linie ist sein Programm für mich als Einsteiger auch besser nachzuvollziehen.

    Amen. Mein Programm ist im Wesentlichen das ein Beispiel aus K&R2. Du kannst die Kritik gerne an die beiden Herren weiterreichen. Dann lernst Du C und keinen Mist.

    Ich glaube auch eher das das Programm in einer bestehenden txt suchen soll (So steht es zumindest im Text).

    Eine Textdatei wird in eines implemenzierungsspezifischen Zusammenhang an das Programm überreicht ('./file < text' zB), während Frank sich auf den Namen "Text.txt" versteift. Was sich besser in eine gewöhnliche Arbeitsumgebung wie Unix einfügt dürftest Du selbst herausfinden können.

    Original erstellt von <Frank>:
    **Wer lesen kann ist klar im Vorteil.
    INT_MAX Leer- bzw Satzzeichen auftauchen

    Den Text will ich sehen.**

    Bei deinen Integern gibt die Norm eine Überlaufsemantik vor? Interessant. Oder wolltest Du nur wissen, dass es Quelldateinen > 20GB gibt?



  • Lassen wir das hier lieber, du verstehst nicht die eigentliche Frage, die hier gestellt wurde.
    1.Datei wurde schon erstellt.
    2.Datei wird neu geöffnet und dann nach Leer bzw Satzzeichen durchsucht.

    Deine Variante:Text eingeben,Text durchsuchen.
    Verstehst du endlich ???
    Nochmal. Textdatei wurde schon erstellt und wird nun nach öffnen,einlesen durchsucht.



  • Original erstellt von <Frank>:
    ...
    Deine Variante:Text eingeben,Text durchsuchen.
    Verstehst du endlich ???
    ...

    Quatsch; Du kannst das Programm von Daniel E. so aufrufen:

    programm < eingabedatei
    

    Und diese Art, Programme zu starten, ist durchaus üblich!

    [ Dieser Beitrag wurde am 30.06.2003 um 12:46 Uhr von mady editiert. ]



  • Also die Dateien sind schon alle vorhanden...

    Leider gelingt es mir nicht, hiermit die Datei text.txt nach der Anzahl der Zeichen durchzusuchen....Bitte nochmal einmal helfen....

    #include <stdio.h>
    
    int main()
    { 
    
      FILE *f;
          f=fopen("text.txt","r");
          if (f==NULL)
              printf("Fehler beim Öffnen");
          else
              printf("Alles Gut");
    
      int bc=0;
    
      while( (bc=fgetc("text.txt")) != EOF)
    
      printf("Die Datei hat %d Zeichen\n",bc);
    
    fclose(f);
    
      return 0;
    
    }
    


  • Original erstellt von Domnick:
    **```cpp
    while( (bc=fgetc("text.txt")) != EOF)

    printf("Die Datei hat %d Zeichen\n",bc);

    Di Schleife umfasst die Ausgabe. Du gibst bei jedem eingegebenen Zeichen dessen numerische Repräsenation aus ('ASCII') und behauptest frech, dieser Wert entspräche der Anzahl der Zeichen. Das ist Quatsch, Du musst explizit mitzählen, also etwas wie 'while (...) ++zeichen;' schreiben. Außerdem hast Du eine so schöne Variable f gebaut und schreibst trotzdem "text.txt" als Argument von fgetc. Das funktioniert nicht.



  • So muss das Programm aussehen. Leider zeigt es mir das Resultat keine Anzahl an ??? Kann das mal jemand bitte auch mal testen...

    Wie gesagt, die .txt Datei ist schon fertig da. Es soll aus dieser Textdatei die Anzahl der Wörter und Sätze gezählt werden.

    Hier der abgeänderte Code:

    #include <stdio.h>
    #include <string.h>
    
    int main() {
    
      FILE *f;
          f=fopen("text3.txt","r");
          if (f==NULL)
              printf("Fehler beim Öffnen");
    
         int leerzeichen, satzendezeichen, c;
    
         leerzeichen = satzendezeichen = 0;
    
         while ((c = getchar(f)) != EOF)
          if (c == ' ') ++leerzeichen; /* Warum nicht auch '\n'? */
          else if (strchr(".!?", c)) ++satzendezeichen;
    
         printf("Es sind %d Woerter und %d Saetze im Text\n", leerzeichen + 1, satzendezeichen);
    
         fclose(f);
    
         return 0;
    }
    


  • Original erstellt von Domnick:
    **```cpp
    #include <stdio.h>
    #include <string.h>

    int main() {

    FILE *f;
    f=fopen("text3.txt","r");
    if (f==NULL)
    printf("Fehler beim Öffnen");

     int leerzeichen, satzendezeichen, c;
    

    Bäh, Deklarationen gehören an den Blockanfang. Schon allein der Übersicht wegen, früher war es auch noch vorgeschrieben.

    while ((c = getchar(f)) != EOF)
    

    getchar bekommt keine Parameter. Nimm wieder fgetc.



  • Hallo lieber Daniel 🙂

    Mit den Hilfen klappte das...

    Bis auf eine Ausnahme:

    Wenn der Text so geschrieben ist:
    Das Haus. Ist blau! und mir ist schlecht.

    dann ist alles OK. Ausgabe: 8 Wörter 3 Sätze.

    Wenn aber so:
    Das Haus. Ist blau!
    und mir ist schlecht.

    Ausgabe: 7 Wörter 3 Sätze. 😕



  • Das hatte ich in einem Kommentar doch angedeutet. Füge in der ersten if-Bedingung (mit dem logischen Oder-Operator) eine zweite abfrage auf »c == '\n'« ein.


Anmelden zum Antworten