mikrocontroller.net

Forum: Compiler & IDEs strtoul-Funktion


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
  char* endPtr;

  Data[1] = (uint16_t) strtoul(Frame[1], &endPtr, 16 );
  if( *endPtr != '\0' )
    // something went wrong

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.