Problema de conversión de tipos de datos C: ¿Cómo convertir la entrada de datos char * argv [] en la función principal en un entero largo sin signo de 64 bits?
Además, le daré un código fuente modificado, que es equivalente a _atoi64. El número devuelto es de tipo largo y puede admitir el procesamiento de números mayores que 4294967295.
long long MY_atol( const char *nptr)
{
int c; /*carácter actual*/
Sr. Long Long ; /*Número total actual*/
int símbolo; /*Si '-', es un número negativo, de lo contrario es un número positivo*/
/*Omitir espacios en blanco*/ p>
mientras(es espacio((int)(unsigned char)* nptr))
nptr;
c =(int)(unsigned char )* nptr;
Símbolo = c; /*Guardar indicación de bandera*/
if (c == '-' || c == ' ')
c =( int)(unsigned char)* nptr;/*Omitir símbolos*/
Total = 0;
while (isdigit(c)) {
Total = 10 *Total(c-' 0 ');/*Número acumulado*/
c =(int)(unsigned char)* nptr;/*Obtener el siguiente carácter*/
}
if (symbol == '-')
Retorno - total
Otros
Retorno; total; /* Devuelve el resultado y lo niega si es necesario*/
}