¿Cómo puedo extraer un número entero desde dentro de una cadena?

Ramux05:

Estoy trabajando en una tarea y como parte de ella que necesito para extraer el número entero de una cadena.

He intentado usar la atoi()función, pero siempre devuelve una 0, por lo que entonces me cambiaron hasta strtol(), pero todavía devuelve una 0.

El objetivo es extraer los números enteros de la cadena y pasarlos como argumentos a una función diferente. Estoy usando una función que a continuación, utiliza estos valores para actualizar algunos datos ( update_stats).

Por favor, tenga en cuenta que soy bastante nuevo en la programación en el lenguaje C, pero esta era 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) Me gustaría extraer el 5y la 8de esa cadena.

El formato de la cadena es siempre la misma.

¿Cómo puedo hacer esto?

digamos,

strtolno encontrar un número en una cadena. Convierte el número en el principio de la cadena . (Lo hace saltar espacios en blanco, pero nada más.)

Si necesita encontrar dónde comienza una serie, se puede usar algo como:

const char* nump = strpbrk(str, "0123456789");
if (nump == NULL) /* No number, handle error*/

( man strpbrk)

Si podrían ser firmados sus números, que necesita algo un poco más sofisticado. Una forma es hacer lo anterior y luego regresar un personaje si el carácter anterior es -. Pero cuidado con el principio de la cadena:

if ( nump != str && nump[-1] == '-') --nump;

Sólo poner -en el strpbrkargumento produciría falsas coincidencias en la entrada como non-numeric7.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=370175&siteId=1
Recomendado
Clasificación