scanf wie getch benutzt
-
Hallo zusammen.
In der Schule haben wir ein Programm geschrieben, bei dem römische Zeichen in Zahlen umgerechnet werden sollten. Der Abschnitt, den ich nicht so ganz verstehe ist diese Verwendung von scanf:
while(zeichen!=10) { scanf("%1c", &zeichen); switch(zeichen) { case 'I': zahl+=1; break; case 'V': ... } } ...
Das hat in der Schule so funktioniert, dass man die Eingabe nicht mit Return bestätigen musste. Mich wunderte allerdings, dass man scanf so verwendet. Ich hätte da eher mit getch gerechnet. Bei mir daheim, funktionierte das allerdings auch nur so, wie ich das kenne - speichern eines Wertes mittels scanf erst nach Druck auf Return.
Habe ich da eine Wissenslücke, und warum funzt das in der Schule und bei mir nur wie gewohnt (in der Schule compiliert mit VC++ Express 2010 bei mir Version 2008)
Danke für's Reinschauen
Gruß
Kai
-
Die Eingabe über die Tastatur ist (meist) Zeielngepuffert. D.h sie wird erst nach drücken der Entertaste in den Eingabestrom gestellt.
Du kannst also mehr als ein Zeichen eingeben. Übernommen werden sie aber erst mit der Entertaste.
Dann kannst du sie auch in einer Schleife auslesen.Das ist auch keine Eigenschaft von
scanf
sondern vom Terminal.getch
ist nicht im ISO-Standard von C
-
Mich wunderte allerdings, dass nach jeder Zeicheneingabe, in den switch gelaufen wurde - ohne Enter. Und das verstehe ich nicht. Wie gesagt, bei mir daheim läuft das auch nicht ohne Entertaste. Und da sowohl in der Schule, als auch bei mir Zuhause Windows läuft, glaube ich nicht, dass das am Terminal liegt.