Doppelte Ausgabe bei printf
-
Hallo an alle,
ich bin ein absoluter Beginner, was die C-Programmierung anbelangt und arbeite mich gerade durch das Kernighan/Ritchie-Buch.
Bei folgendem Code habe ich ein Problem:#include <stdio.h> main() { int c; while (c = getchar() != EOF) printf("%d \n", c); }
Die Ausgabe soll mir eine 1 liefern, wenn das eingelesene "c" ungleich EOF ist. Ich bekomme aber immer Folgendes, z.B. gebe ich "a" ein und erhalte dann zwei Einsen, also
a
1
1
und dann wartet er auf die nächste Eingabe.
Warum erscheint die "1" doppelt ?? Ich habe doch nur einen printf-Befehl ?Wäre echt schön, wenn mir jemand helfen könnte.
Danke im Voraus,
M.
-
Du hast c als int deklariert. Mach es zu einem char, dann sollte es klappen.
Warum bei der Ausgabe lauter 1 rauskommt, ist mir allerdings auch nicht ganz klar.PS: "Doppelt" ist es deswegen, weil du 2 Zeichen eingegeben hast: 'a' und 'return'
-
Na klar, das isses.
Super, vielen Dank !!!
-
while (c = getchar() != EOF)
du meintest doch sicherwhile ((c = getchar()) != EOF)
Ansonsten wird c immer nur die Werte "1" oder "0" annehmen.
-
Danke, damit hast du auch meine Frage beantwortet
-
Hallo Javaner,
nein, ich meinte schon, dass "c" nur die Werte 0 und 1 annehmen soll.
Die Klammern bei der while-Schleife waren also richtig gesetzt. Aber hat sich ja nun geklärt, vielen Dank trotzdem !