Red de conocimiento informático - Material del sitio web - ¿Cómo distinguir el valor de retorno de entrada ilegal de atoi() como 0 y el valor de retorno de entrada de 0?

¿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;

}

}