¿Cómo distinguir el valor de retorno de entrada ilegal de atoi() como 0 y el valor de retorno de entrada de 0?
De hecho, los resultados de salida de coutlt;lt;atoi("0abc"); y coutlt;lt;atoi("abc");
Además, dado que el valor de retorno de atoi puede ser cualquier número en el rango de int, y todos los valores de retorno pueden ser str, la presencia de un carácter numérico no se puede determinar completamente basándose únicamente en el valor de retorno. valor int.
Si "0" está presente en la cadena *str, creo que sería mejor escribir una función yo mismo que use el parámetro NumExit para determinar si un número está presente.
int f(char* str, boolamp; NumExist)
{
NumExit=false
int Num=0;
for(int i=0; i!='\0'; i )
{
if (str[i] es un carácter ignorable, tal como espacios)
Continuar;
si (str[i] es un número, signo más, signo menos, etc.)
{
NumExist=true;
Registre el número en Num
}
De lo contrario
Devuelve Num;
}
}