strtoul-Funktion

Gast #1141899
Lesenswert?

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
#1141969
Lesenswert?

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

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