Buenas a todos!
Tengo una duda con este procedimiento, Le pedimos, por ejemplo, un entero al usuario... tomamos lo que cargue como una cadena , en caso de que haya ingresado algo mal. Y con la función atoi() lo convertimos a un entero. El problema es que si ingreso por ejemplo, algo como "abcds29" no me capta el 29.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int num;
char cad[50];
printf("Introduzca un numero entero\n");
gets(cad);
num = atoi(cad); /**convierte una cadena en un entero solo si no
hay letras antes del entero?**/
printf("El numero registrado es %i\n",num);
return 0;
}
https://www.cplusplus.com/reference/cstdlib/atoi/
"If the first sequence of non-whitespace characters in str is not a valid integral number, or if no such sequence exists because either str is empty or it contains only whitespace characters, no conversion is performed and zero is returned."
Es cierto, funciona si la en la cadena hay solo números. Si realmente quieres obtener los números aunque hayan caracteres deberías hacer una función que limpie esa cadena de todo lo que no sea un número, desconozco si hay una función que haga esto.
Ya veo gracias por sus respuestas! quería confirmarlo.