überprüfen ob char oder int

Hi,
weis jemand wie ich es vermeiden kann das jemand in c ein char eingibt anstatt einer zahl.
ich dacht an while() weis aber nicht welche bedingung?

Howdy,

weis jemand wie ich es vermeiden kann das jemand in c ein char
eingibt anstatt einer zahl.
ich dacht an while() weis aber nicht welche bedingung?

gehen wir mal davon aus, dass
* du weisst, wie man ein char c einliest
* du eigentlich Ziffern anstatt Zahlen gemeint hast.

Dann lautet die Bedingung

isdigit(c)

isdigit© liefert true, sofern c ein Ziffernzeichen ist (also ‚0‘ bis ‚9‘), ansonsten false. Alternativ kann man auch die Bedingung

'0' = c

nehmen, wobei diese Version nur für ASCII Charsets funktioniert, die erstere per Definition aber auch für andere Zeichensätze.

Gruss
norsemanna

Hi,
schonma danke für die antwort ich meinte das aber ein bisschen anders und zwar in prog sprache ‚c‘

hier mal das was ich habe

do
{
fflush(stdin);
printf(„Bitte geben Sie eine Ganzzahl ein, z.B 15\n“);
scanf("%d", &i);

}while(i = ‚1‘ );

und da soll die schleife halt so lange wiederholt werden bis er eine ziffer eingibt.

Hi,

meine Antwort war C/C++ :wink: Wenn du derartig was einlesen moechtest, dann solltest du dir gets/fgets anschauen. Damit kannst du einen String einlesen (genauer Zeichen in einen char Buffer). Danach kannst du den String mit strtol in einen long int konvertieren.

char buffer[1024];
char \*p;

gets(buffer);

long I = strtol(buffer,&p,10);

gets ist unsicher, weil es die buffer Grenzen nicht überprüft.

Falls *p nach dem strtol ein Nullbyte ist, war der gesamte String eine Zahl, ansonsten steht in dem String auch noch etwas drinnen, was nicht als Ziffer interpretiert werden konnte, siehe hierzu die Manpages:

http://www.cplusplus.com/reference/clibrary/cstdio/g…
http://www.cplusplus.com/reference/clibrary/cstdlib/…

Gruss
norsemanna

hi,
danke habs hungebekommen allerdings hab ich noch woanders ein prob. und zwar hab ich ein array mit n paar zahlen und wenn ich die in einer schleife ausgeben will

for(a=d;a>0;a–)
{
printf("%d",feld[a]);
}

gibt der die ziffern nicht hintereinander aus sondern als irgendein unsinn?!

Hi!

Also, er gibt dir nicht alle Zahlen einmal verkehrt herum aus, richtig? Und tut er es denn „d“ mal, oder funktioniert das auchnicht?

Also laut Code sollte er „d“-Mal Einzelne Inhalte von „feld“ ausgeben, und zwar rückwärts. Ist das so gewollt?

Liebe Grüße
Shisu

Howdy,

printf("%d",feld[a]);
}
gibt der die ziffern nicht hintereinander aus sondern als
irgendein unsinn?!

nein, kein Unsinn. Es fehlt lediglich der \n

 printf("%d\n",feld[a]);

Gruss
norsemanna