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 5y el 8de esa cadena.
El formato de la cadena es siempre el mismo.
¿Cómo puedo hacer esto?
isdigitantes de usarstrtol
atoiy strtolespere 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 strtolno es una forma correcta de encontrar el "5" y convertirlo en un número.