C library function - strtol()

OP #6319056
Lesenswert?
• ▲
▼
Ich habe das Problem, dass ich einen PWM Wert aus einen char Puffer in 
int
wandeln muss. Soweit kein Problem.

Der Puffer ist der rx_buffer eines UDP Servers.

Mein Problem, wenn der Puffer leer ist, gibt strtol() den Wert 0 zurück.
Damit steht mein PWM Device logischerweise.

1
while(1) {
2

3
   throttle = strtol(rx_buffer, NULL, 10);
4

5
      if (throttle == 0) { 
6
         STOP
7
      }
8
}

Die 0 soll natürlich verarbeitet werden, wenn sie denn über den 
rx_buffer
empfangen wird.
Gast #6319077
Lesenswert?
• ▲
▼
Manpage:

> If  endptr  is  not  NULL,  strtol() stores the address of the first invalid
> character in *endptr.  If there were no digits at all, strtol() stores the
> original value of nptr in *endptr (and returns 0).  In particular, if *nptr is
> not '\0' but **endptr is '\0' on return, the entire string is valid.

Also ja, ungefähr so.
Gast #6319121
Lesenswert?
• ▲
▼
W3ll S. schrieb:
> Mein Problem, wenn der Puffer leer ist, gibt strtol() den Wert 0 zurück

Warum wendet man strtol und das nachfolgende setzen von throttle 
überhaupt auf einen leeren rx_buffer[0]=='\0' buffer an ?
Programmierfehler ? Faulheit ? Die fälschliche Erwartung dass jemand für 
einen schon die Arbeit macht ?

Antwort schreiben

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.

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.