Forum: Compiler & IDEs Umwandlung eines Char-Arrays in eine Zahl


von Christian (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem:

über den UART empfange ich einen String, der dann in ein Char-Array 
gespeichert wird. Die empfangenen Zeichen sind Ziffern, die ich als Zahl 
brauche. Wie mache ich das in C?

Vielen Dank für eure Hilfe!

Gruß, Christian

von Rolf Magnus (Gast)


Lesenswert?

Mit strtol (oder atoi)

von gast (Gast)


Lesenswert?

oder selbst rechnen

in jedem element des arrays  steht auch nur von 0x00 bis 0xff was drin
mit atoi gehts aber


zahl = atoi(  array[index] ) ;

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> mit atoi gehts aber
> zahl = atoi(  array[index] ) ;

Was kommt denn dann heraus, wenn array = {'1','2','3','4',0} ist?
Resultat:
index = 0 --> zahl = 1234
index = 1 --> zahl = 234
index = 2 --> zahl = 34
index = 3 --> zahl = 4
Und weiter?

Und was kommt heraus, wenn array = {'1','2','3','4','5'} ist?
Ja, jetzt wirds so richtig spannend, nicht wahr?


Zurück zum Thema:
Ein String ist in C ein char-Array, das mit einer NULL ( = 0x00 = 0) 
abgeschlossen ist. Alle Stringoperationen erwarten so ein mit Null 
terminiertes char-Array. Wenn die Null fehlt, arbeiten sich die meisten 
Funktionen einfach soweit durch den Speicher, bis irgendwo eine Null 
auftaucht (die Chancen dafür stehen bei 1:255 ;-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> zahl = atoi(  array[index] ) ;

Nein.

atoi erwartet einen Pointer auf char, nicht einen char.

Also:
1
zahl = atoi(array);
oder, wenn Zeichen darin übersprungen werden sollen:
1
zahl = atoi(array + 1);
was sich auch umständlicher schreiben lässt als
1
zahl = atoi(&array[1]);

von gast (Gast)


Lesenswert?

stimmt ... ich vergaß ....  sry -.-

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.