Falscheingaben mit scanf abfangen
-
Hallo,
ich hoffe ihr könnt mir helfen, ich habe eine Konsolenanwendung entwickelt und dabei muss eine Zahl eingelesen werden. Dies tue ich mit scanf, allerdings bricht mein Programm zusammen, wenn statt einer Zahl Zeichen eingegeben werden. Wie kann ich verhindern das Zeichen eingegeben werden?
Danke schon im voraus
-
Dies tue ich mit scanf
Also ich kenne mich mit den C I/O-Funktionen nicht so aus, aber versuch's mal so:
#include <stdio.h> int main() { int i; printf("Bitte geben Sie eine Zahl ein: "); while (!scanf("%d", &i)) { printf("Ich sagte Zahl!\n"); printf("Bitte geben Sie eine Zahl ein: "); clearerr(stdin); while (getc(stdin) != '\n' ); } printf("Danke. Ihre Zahl: %d", i); }
-
while (scanf(...) != 1) würd ich sagen
-
while (scanf(...) != 1) würd ich sagen
Nagut
-
:):)
-
These functions return the number of input items assigned, which can be fewer than provided for, or even zero, in the event of a matching failure. Zero indicates that, while there was input available, no conversions were assigned; typically this is due to an invalid input character, such as an alphabetic character for a `%d' conversion. The value EOF is returned if an input failure occurs before any conversion such as an end-of-file occurs. If an error or end-of-file occurs after conversion has begun, the num� ber of conversions which were successfully completed is returned.
Manpage zu scanf(3)
-
Eine Frage noch dazu: Sollte man die 'int i' variable nicht besser mit 0 initilisieren oder ist das so völlig in Ordnung?
-
Wozu denn?
-
Zero indicates that, while
there was input available, no conversions were assigned;
typically this is due to an invalid input character, such
as an alphabetic character for a `%d' conversionDas war der Grund weshalb ich !scanf geschrieben habe.
-
lies die Zahl als CHAR ein und wandle sie mit prints in INT oder FLOAT um!