char einlese und in int umwandeln
-
Hallo liebe Community,
ich möchte folgendes tuen.
es soll eine Zahl eingelesen werden. Um die Eingabe für alle Zeichen möglich zu machen (. und , sowie Zeichen) soll eine char abgefragt werden
scanf("%s", &eingabe);
nach der Abfrage soll geschaut werden, ob eingabe[0] und eingabe[1] nur zahlen von 0-9 sind. sonst soll die eingabe wiederholt werden. sollte das richtig sein, soll der die eingabe = einer int setzen;
int d = eingabe;
Wie stelle ich das an?
VIELEN DANK! und schöne Weihnnachtstage!
-
atoi macht das:
http://cplusplus.com/reference/clibrary/cstdlib/atoi/
-
z.B. so:
do { // einlesen } while((eingabe[0] <'0') || (eingabe[0] > '9') (eingabe[1] <'0') || (eingabe[1] > '9') )
Neben atoi() schau' Dir auch mal sscanf() an. Ist zwar langsamer, aber auch flexibler.
-
Hallo,
danke für eure schnelle Hilfe!
Das ist nur ein sehr kleines Programm, daher sollte es nicht schlimm sein, wenn es langsam ist. Könntet ihr mir das mit dem atoi kurz schreiben? ich bin Anfänger und verstehe das nicht:( VIELEN DANK!
-
fgets ( eingabe, 256, stdin );
d = atoi (eingabe);
-
jochengottschaldt schrieb:
Könntet ihr mir das mit dem atoi kurz schreiben? ich bin Anfänger und verstehe das nicht:( VIELEN DANK!
Wenn du auf den Link von mir oben zur atoi-Doku geklickt hättest, hättest du ein komplett kompilier- und lauffähiges Beispielprogramm gefunden.
-
l'abra d'or schrieb:
jochengottschaldt schrieb:
Könntet ihr mir das mit dem atoi kurz schreiben? ich bin Anfänger und verstehe das nicht:( VIELEN DANK!
Wenn du auf den Link von mir oben zur atoi-Doku geklickt hättest, hättest du ein komplett kompilier- und lauffähiges Beispielprogramm gefunden.
Wahrscheinlich fragt er jetzt, was'n Link ist ...
-
Hmm ich weiß nicht was genau du machen willst. Du liest kein char ein sondern ein String. Ein char ist ein einzelnes Zeichen, Strings sind Zeichenketten. Und wenn du Punkt bzw. Komma akzeptieren willst, dann willst du kein int (ganze Zahl) sondern ein double oder float (Kommazahl).
Vielleicht tut es das hier:
float f; scanf("%f", &f); printf("es wurde die Zahl %f eingelesen\n", f);