Estoy trabajando en una tarea y como parte de ella necesito extraer el entero de una cadena.
Intenté usar la atoi()
función, pero siempre devuelve a 0
, así que cambié a strtol()
, pero aún devuelve a 0
.
El objetivo es extraer los enteros de la cadena y pasarlos como argumentos a una función diferente. Estoy usando una función que luego usa estos valores para actualizar algunos datos ( update_stats
).
Tenga en cuenta que soy bastante nuevo en la programación en lenguaje C, pero este fue mi intento:
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);
}
El propósito de esto es en una cadena "e5 d8"
(por ejemplo) extraería el 5
y el 8
de esa cadena.
El formato de la cadena es siempre el mismo.
¿Cómo puedo hacer esto?
isdigit
antes de usarstrtol
atoi
y strtol
espere recibir el puntero al primer carácter de un número: su puntero ya debe estar apuntando a un dígito. Ni "e" ni "d" son dígitos cuando la base es 10. Para encontrar los números en la cadena, debe escribir un código para examinar cada carácter y determinar si es un dígito o no. Una vez que haya encontrado un dígito, puede convertirlo (solo un dígito) o la secuencia de dígitos (varios dígitos) a un número, dependiendo de cuál sea su necesidad.
"e5 d8"
to strtol
no es una forma correcta de encontrar el "5" y convertirlo en un número.