Hi zusammen, ich beginne gerade mit der Programmierung in C Sprache. Ich benutze die Funktion stroul um einige Parameter zu zuweisen Z.B. Data[1] = (uint16_t) strtoul(Frame[1],(void*)0,16); Wenn der Inhalt der Variable Frame[1] außer dem Bereich 0 bis 9 oder A bis F liegt, wird den Wert 0 im Data[1] gelegt. Meine Frage ist: gibt es die Möglichkeit ein andere Wert z.B 20 oder anderer Buchstabe z.B v zu definieren, wenn der Inhalt von Frame außer dem erlaubten Bereich liegt. Ich meine statt der Wert 0 ein beliebige Wert setzen. danke
Gast wrote: > Meine Frage ist: gibt es die Möglichkeit ein andere Wert z.B 20 oder > anderer Buchstabe z.B v zu definieren, Nein, leider nicht. strtoul und konsorten sind dazu gedacht auch dann benutzbar zu sein, wenn die Zahl in einen Textkontext eingebettet ist. > wenn der Inhalt von Frame außer > dem erlaubten Bereich liegt. Ich meine statt der Wert 0 ein beliebige > Wert setzen. Was du machen kannst: Wenn sicher gestellt ist, dass dein Eingangsstring nur die Zahl enthält, dann muss strtoul den String bis zum Ende geparst haben. Und dakommt jetzt das zweite Argument von strtoul ins Spiel. Dort übergibst du die Adresse eines char Pointers. Ist der String bis zum Ende geparst worden, dann muss dieser Pointer nach dem strtoul auf ein '\0' Zeichen zeigen. Ansonsten ist irgendetwas schief gegangen
1 | char* endPtr; |
2 | |
3 | Data[1] = (uint16_t) strtoul(Frame[1], &endPtr, 16 ); |
4 | if( *endPtr != '\0' ) |
5 | // something went wrong
|
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.