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

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