Die Funktion strtol konvertiert eine Zeichenfolgendarstellung einer langen Ganzzahl in einen langen Wert. Es ist jedoch wichtig zu verstehen, wie Fehler bei der Verwendung dieser Funktion richtig behandelt werden.
Im angegebenen Code entsteht das Problem aufgrund einer falschen Annahme. Der Code basiert auf der Tatsache, dass der zweite Parameter gleich NULL sein sollte, wenn strtol die Zeichenfolge erfolgreich konvertiert. Diese Annahme trifft jedoch möglicherweise nicht immer zu.
Um Fehler von strtol effektiv zu erkennen, müssen die richtigen Richtlinien zur Fehlerbehandlung befolgt werden:
Hier ist eine überarbeitete Version der parseLong-Funktion, die diesen Prinzipien entspricht:
static long parseLong(const char *str) { errno = 0; char *temp; long val = strtol(str, &temp, 0); if (temp == str || *temp != '<pre class="brush:php;toolbar:false">bool parseLong(const char *str, long *val) { errno = 0; char *temp; *val = strtol(str, &temp, 0); if (temp == str || *temp != '' || ((*val == LONG_MIN || *val == LONG_MAX) && errno == ERANGE)) { return false; } return true; }
Alternativ zur getrennten Fehlerbehandlung Aus dem Konvertierungsergebnis kann eine modifizierte Schnittstelle verwendet werden:
Das obige ist der detaillierte Inhalt vonWie kann ich strtol korrekt verwenden, um Zeichenfolgen in lange Ganzzahlen umzuwandeln und potenzielle Fehler zu behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!