The atoi
function is for converting an integer string to a number, not each character. To convert a character to number simply use the ASCII table and subtract it.
If you have the character '2'
and you want to have the number 2
you can subtract the value of the character '0'
that will give you 2
Example:
-
'2'
= > letter 50 of the ascii table
-
'0'
= > letter 48 of the ascii table
'2'-'0' = 50 - 48 = 2
that was the value you wanted.
To use this in your code you can do the same logic without using the string library and using pointers, like this:
char numero[] = "123456789";
char *letra = numero; //ponteiro letra aponta para o primeiro caractere
int soma = 0;
while (*letra!='char numero[] = "123456789";
char *letra = numero; //ponteiro letra aponta para o primeiro caractere
int soma = 0;
while (*letra!='%pre%'){ //enquanto não apanhar o terminador da string
soma += (*letra) - '0'; //conversão de letra para número e soma
letra++; //aponta para a proxima letra
}
printf("%s dá como soma de numeros %d", numeros,soma);
'){ //enquanto não apanhar o terminador da string
soma += (*letra) - '0'; //conversão de letra para número e soma
letra++; //aponta para a proxima letra
}
printf("%s dá como soma de numeros %d", numeros,soma);
See it working on Ideone