Olá!
Como faço para transforma string em int e vice-versa sem usar as funções itoa e atoi?
Agradeço a atenção.
imagina que vc tem a string “12345”
que é, na verdade, um array {'1', '2', '3', '4', '5', '\0' }
se vc sabe o tamanho dessa string ( se não sabe, use strlen
) vc pode fazer
// supondo que n é um array contendo "12345"
int i, posicao, potencia, numero;
potencia = 1;
numero = 0;
for(i = 0; i < tamanho; i++){
posicao = tamanho - i;
digito = n[ posicao ]
numero = magica( digito ) * potencia;
potencia *= 10;
}
ou seja, eu pego cada digito, de traz pra frente, e multiplico pela potencia de 10
5 + 4 * 10 + 3 * 100 + 2 * 1000 + 1 * 10000 = 12345
agora qual a magica? pois bem, um char contem um numero, mas é o valor daquele caracter na tabela ASCII
o valor do numero ‘0’ é x, o valor do numero ‘1’ é x + 1
se vc quer conveterter ‘1’ em 1 vc precisa subtrair x, certo?
valor = digito - '0';
agora basta pensar um pouco e brincar com alguns valores ate o programa ficar redondo
Muito Obrigado!
Abraço.