Warum funktioniert getchar () nicht richtig?

9

Heute habe ich einen einfachen Code geschrieben, der getchar() verwendet, um die eingegebenen Zeichen zu zählen. Aber wenn ich es auf Cygwin kompiliere, funktioniert es nicht. Es druckt immer 0, aber ich gebe nie etwas ein oder ich kann keine Zeichen eingeben, die 0 drucken.

Wenn ich es jedoch mit VC ++ 6.0 kompiliere, funktioniert es.

%Vor%     
yunfeng 01.01.2012, 14:17
quelle

1 Antwort

0

In diesem E-Mail-Thread geht es um einen Fehler, der ähnlich klingt wie deins, aber ich kann ' Ich sehe, dass es irgendwelche Folgemaßnahmen gibt.

Ich würde gerne wissen, was passiert ist, wenn Sie es versuchen

while(getc(stdin) != EOF)

und wenn das nicht funktioniert, versuche es while(fgetc(stdin) != EOF)

Alle sollten funktionieren , obwohl dies Seite schlägt vor, dass es Implementierungsunterschiede zwischen diesen Funktionen geben könnte.

Eine andere Sache, die Sie versuchen könnten, ist, den ASCII-Wert dessen zu drucken, was Sie erhalten:

printf("%d\n",(int)getchar());

Versuchen Sie auch, eine Ausgabe aus einer Datei auszugeben, anstatt sie in der Konsole einzugeben. Erstellen Sie eine Datei input.txt , fügen Sie einige Zeichen ein und machen Sie

cat input.txt | ./program

EDIT: Du schreibst laufende Katze und Piping funktioniert. Ich würde sagen, aktualisieren Sie einfach Ihre Cygwin-Version. Sie haben einen Fehler festgestellt. Holen Sie sich die neuesten Versionen von Cygwin und den Compiler, und Sie sollten gut gehen. Eine andere Möglichkeit ist scanf .

    
Christian Neverdal 01.01.2012, 14:33
quelle

Tags und Links