Red de conocimiento informático - Conocimiento informático - Si es un carácter, el resultado de salida es 0. Si es un número, el resultado de salida es 1 y la unidad es c.

Si es un carácter, el resultado de salida es 0. Si es un número, el resultado de salida es 1 y la unidad es c.

Porque tu subrutina int is_integer(char*str);

solo determina si el primer carácter al principio es un número. Si es un número, devolverá 1, si no es un número, devolverá 1. devolverá 0.

Si el primer carácter es un signo menos, se juzga el segundo carácter. Si el segundo carácter es un número, se devuelve 1 y, si no es un número, se devuelve 0.

Entonces ingrese 12123wew. De acuerdo con los principios anteriores, el primer carácter es un número, por lo que se devuelve 1.

Si se modifica a:

if(str[0]=='-') str++;

for(i=0;str[i]! ='\0';i++) f(!isdigit(str[i])) devuelve 0;

devuelve 1;

Luego juzgue toda la cadena, solo cuando esté toda números antes de devolver 0.