strtoul-Funktion

Gast #1141899
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.