Ich arbeite an einer Aufgabe und als Teil davon muss ich die Ganzzahl aus einer Zeichenfolge extrahieren.
Ich habe versucht, die atoi()
Funktion zu verwenden, aber sie gibt immer a zurück 0
, also habe ich auf umgeschaltet strtol()
, aber es wird immer noch a zurückgegeben 0
.
Ziel ist es, die Ganzzahlen aus der Zeichenfolge zu extrahieren und als Argumente an eine andere Funktion zu übergeben. Ich verwende eine Funktion, die diese Werte verwendet, um einige Daten zu aktualisieren ( update_stats
).
Bitte denken Sie daran, dass ich ziemlich neu in der Programmierung in der C-Sprache bin, aber dies war mein Versuch:
void get_number (char str[]) {
char *end;
int num;
num = strtol(str, &end, 10);
update_stats(num);
num = strtol(end, &end, 10);
update_stats(num);
}
Der Zweck ist , in einem String "e5 d8"
(zum Beispiel) Ich würde das extrahieren 5
und die 8
aus dieser Zeichenfolge.
Das Format der Zeichenfolge ist immer gleich.
Wie kann ich das machen?
isdigit
bevor Sie verwendenstrtol
atoi
und strtol
erwarten, den Zeiger auf das erste Zeichen einer Ziffer zu erhalten - Ihr Zeiger muss bereits auf eine Ziffer zeigen. Weder "e" noch "d" ist eine Ziffer, wenn die Basis 10 ist. Um die Ziffern in der Zeichenfolge zu finden, sollten Sie Code schreiben, um jedes Zeichen zu untersuchen, um festzustellen, ob es eine Ziffer ist oder nicht. Sobald Sie eine Ziffer gefunden haben, können Sie sie entweder (nur eine Ziffer) oder die Ziffernfolge (mehrere Ziffern) in eine Zahl umwandeln, je nachdem, was Sie benötigen.
"e5 d8"
to strtol
ist kein korrekter Weg, um die „5“ zu finden und in eine Zahl umzuwandeln.