ZeichenundWortzaehlprogramm-Anwendungsweise
-
Hallo liebe Freunde der Programmiersprachen,
Ich habe hier ein Programm welches aus dem Standardwerk kerningham&ritchie
entnommen ist#include<stdio.h> #include<stdlib.h> //#define IN 1 zum besseren Verständnis --IN OUT-- in einem Wort //#define OUT 0 ausserhalb eines Wortes main(){ int c,nl,nw,nc,state; state=0; nl=nw=nc=0; while((c=getchar())!=EOF) { ++nc; if (c=='\n') ++nl; if (c== ' ' || c == '\n' || c == '\t') state=0; else if (state == 0) { state=1; ++nw; } } printf("%d %d %d \n",nl,nw,nc); //system("pause"); }
es ist in der Lage Woerter Zeichen und Zeilenumbrüche zu zaehlen !
Ich bin in C Anfaenger aber kann Quelltext schon ganz gut lesen und
verstehen ... es ist mir nach einigen Minuten ohne weiteres gelungen
die Logik und arbeitsweise zu verstehen.
Das Problem ist das Programm dazu zu bekommen einen Text zu
bearbeiten die Variable EOF soll scheinbar das Ende eines Textes
siganlisieren.
Die hier von mir nur leicht veränderte Version (OUT = 0 In =1 - habe die
Originalwerte 0 und 1 im Programm verarbeitet) läuft fehlerfrei, zählt aber
nichts ...
Meine Frage : Was muss hier getan werden damit das Programm einen Text
zaehlt? und ausgibt ?
-
Ich verstehe nicht, was deine Frage ist. Der Quelltext tut genau, was angepriesen wird. Er zählt Zeilen, Wörter und Buchstaben, gibt anschließend das Ergebnis aus.
Die hier von mir nur leicht veränderte Version (OUT = 0 In =1 - habe die
Originalwerte 0 und 1 im Programm verarbeitet) läuft fehlerfrei, zählt aber
nichts ...Wovon redest du? Du hast ein paar auskommentierte defines im Programm, aber selbst wenn du sie aktivierst, ändern diese nichts im Programm.
Meine Frage : Was muss hier getan werden damit das Programm einen Text
zaehlt?Nichts!
und ausgibt ?
Gib eben die gelesenen Zeichen direkt nochmal aus.
-
Ich meine wie Ich das Programm einsetze !
d.h. es soll doch einen Text durarbeiten und anschliesend das Ergebnis
ausgebenprintf("%d %d %d \n",nl,nw,nc); //system("pause"); }
das passiert nicht ?
das Terminal geht in einen Text-Einlesemodus, und wenn Ich mit
STRG+C einen Abbruch erzeuge erfolgt keine Ausgabe.
Entweder muss man das Programm auf ein File richten, - dies würde
eine Erweiterung des Quelltextes erfordern oder es muss
eine spezielle Eingabe getätigt werden die EOF entspricht, so dass
gemäß dem Quelltext der Schleifenabbruch erfolgt und die anschliessende
Ausgabe .... ---- Probier das Programm bitte mal selber aus ... dann
verstehst du was Ich meine.
Ohne Eine Ausgabe bzw. Einlesen eines bestimmten Textes ist das Programm
doch sinnlos?
-
Ich bekomme im Terminal keine Ausgabe ?
Das ist mein Problem
-
Arbeitest du unter Windows? Dann mußt du in der Konsole "Strg+Z" als EOF eingeben.
"Strg+C" bricht dein ganzes Programm ab (wie du ja selbst schon erfahren hast ;-).P.S: Du kannst auch in der Konsole aus einer Datei lesen, einfach die Eingabe mittels '<' umleiten:
program.exe <input.txt
Edit: immer diese Buchstabendreher...
-
Unter Linuxartigen Systemen wäre das übrigens CTRL+D.
-
Arbeite mit Windows Dev++ und auch ubuntu gedit + Terminal ...
mit Strg+D hat es jetzt unter ubuntu einwandfrei funktioniert
Danke für eure Beiträge !!!