-
Notifications
You must be signed in to change notification settings - Fork 0
atoi
PabloVillagran edited this page Nov 3, 2018
·
3 revisions
Es la función encargada de transformar cualquier cadena de caracteres válida en un numero entero. Si el ingreso no es un número la función retornará valores no esperados.
Esta funcion aprovecha el orden de los números en la tabla ASCII para calcular el valor de un caracter ingresado. Para C un caracter solo es un valor numérico ASCII. De esta manera, al calcular la diferencia de cualquier caracter, en específico el 0, C realizará la operación y devolverá enteros. Entonces :
- tomando en cuenta que el caracter '0' = 48
- tomando en cuenta que los caracteres que corresponden a los digitos del 0 al 9 estan ordenados acendentemente en la tabla ASCII
Cualquier caracter que representa a un digito, al restarle el caracter '0' devolverá su verdadero valor entero.
'5' - '0' = 53 - 48 = 5
's' - '0' = 115 - 48 = 67
Declaración de función
log atoi(char * c)
Asignación de la función atoi y su retorno
long atoi(char * c){
`unsigned long l = strlen(c);//asignamiento de long`
`long result = 0;`
`long i = 0;`
`int boo = 0;`
`//for(int i=0; i<l; i++){//comienza el ciclo en búsqueda de valores como enter y valores negativos`
`while(c[i]!='\0'){`
`if(c[i]=='-')boo=1;`
`else result = result * 10 + ( c[i] - '0' );`
`i++;`
`}`
`if(boo){`
`result = result * -1;//conversión a numero positivo`
`}`
`return result;`
}