char string zerhacken und in int Variablen speichern

OP #3795188
Lesenswert?

Hallo liebe Gemeinde,

ich habe einen String der lautet: 1234T1 und diesen String möchte ich 
gerne in int var speichern...

Problem ich möchte haben:
uint8_t stelle12; also bis 99 im Beispiel = 12
uint8_t stelle34; also bis 99 im Beispiel = 34
char kennung[1]; im Beispiel = 'T'
uint8_t stbit; im Beispiel = 1


mit atoi kann ich nur eine Stelle speichern (-48 wegen ascii)

hier mein erster Lösungsansatz der so mit atoi leider nicht funktioniert 
(warum ist mir auch klar)

 //Stelle 1 und 2 wird als eine Zahl in uint8_t stelle12 gespeichert
                for(j=0;j<=1;j++)
                   buffer[j]=scan[j];

                stelle12=atoi(buffer);
                j=0;

 //Stelle 2 und 3 wird als eine Zahl in uint8_t stelle34 gespeichert
                for(j=0;j<=1;j++)
                    buffer[j]=scan[j+2];

                stelle34=atoi(buffer);
                j=0;

hat jmd eine idee, wie man es machen könnte, ich benötige leider die 
Zahlen größer als einstellig....

Vielen Dank
OP #3795221
Lesenswert?

Vielen Dank für die schnellen Antworten, habe den Fehler gefunden, der 
Buffer war eine Stelle zu klein und es gab einen Überlauf also funzt 
meine Lösung nur muss der Puffer (ganz klar) [3] groß sein!

Bin nicht so erfahren, aber warum nicht atoi?? wenn es so funzt, was 
könnte es für Probleme bereiten?
Gast #3795228
Lesenswert?

char Eini [] = "1234T1";

char Aussi [3];

uint_8 Zahl1;
uint_8 Zahl2;
uint_8 Zahl3;
char   Type;

Aussi [ 2 ] = '\0';
Aussi [ 0 ] = Eini [ 0 ];
Aussi [ 1 ] = Eini [ 1 ];
Zahl1 = atoi ( Aussi );
Aussi [ 0 ] = Eini [ 2 ];
Aussi [ 1 ] = Eini [ 3 ];
Zahl2 = atoi ( Aussi );
Type = Eini [ 4 ];
Aussi [ 1 ] = Eini [ 5 ];
Zahl3 = atoi ( &Aussi [ 1 ] );

Ein halber Blick in ein "C"-Buch und Du hättest Das Ganze auch selber 
geschafft!
Gast #3795241
Lesenswert?

Heiko K. schrieb:
> Bin nicht so erfahren, aber warum nicht atoi?? wenn es so funzt, was
> könnte es für Probleme bereiten?

keine Probleme, es könnte nur zu "langsam" sein wenn viele Daten 
verarbeitet werden. Und es braucht halt etwas mehr Speicher, weil die 
Funktion atoi eingebunden werden muss und man noch zusätzlich Daten 
umkopiert was eigentlich nicht notwendig ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren