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
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] ) ;
> 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 ;-)
> 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]); |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.