Wörter und Sätze in einer Datei zählen
-
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.