PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Parameter von char zu int konvertieren



Andy1988
10-03-2005, 12:47
Ich versuche grade zwei integer Werte von der Konsole zu holen, die vom typ char sind und nach int zu konvertieren, um damit zu rechnen.Allerdings kommen dabei extrem hohe Zahlen raus, die nicht stimmen:


#include <stdio.h>

int main(int argc, char *argv[])
{
unsigned int oben, unten;

if(argc != 3)
{
printf("usage: %s untere_grenze obere_grenze\n", argv[0]);
return 1;
}

unten = int(argv[1]);
oben = int(argv[2]);

printf("unten: %u\n",unten);
printf("oben: %u\n",oben);

return 0;
}

Wie mach ich das richtig?

Boron
10-03-2005, 13:23
Such mal im Netz nach ASCII-Tabelle.
Vielleicht fällt dir dann auf, warum du zu größe Zahlen bekommst.

Tipp:
Die Integer Zahlen weichen alle um die gleiche Differenz von der oberen Zahl ab (wenn die eingegeben Zahl einstellig ist).

Wenn du mehrstellige Zahlen verwendest such mal nach einer Funktion atoi() (ASCII to Integer).

locus vivendi
10-03-2005, 13:39
argv[x] enthält einen Zeiger, kein einzelnes Zeichen.

Andy1988
10-03-2005, 18:28
Mit atoi() hats geklappt!
Danke!

locus vivendi
10-03-2005, 21:46
atoi ist aber eher unzuverlässig, weil es Fehler nur durch 0 als Rückgabewert meldet. Wenn die 0 also nicht als gültiges Resultat ausgeschlossen werden kann, ist es besser strtol zu verwenden.