Eu estava procurando uma função para converter string em float, então soube que existe uma que faz isso, a ataf(). Só que eu não consegui usar aqui, sabe-se láh por que, o meu compilador não achou mesmo declarando a biblioteca certa. Então eu resolvi fazer ela pra mim usar, já que eu fiz eu vou postar aqui e talvez possa ser útil pra quem tenha enfrentado mesmo problema que eu , ou para até questão de aprendizadomesmo....
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int retorna_numero(char letra)
{
int numero;
if( letra == '0' ) numero = 0;
if( letra == '1' ) numero = 1;
if( letra == '2' ) numero = 2;
if( letra == '3' ) numero = 3;
if( letra == '4' ) numero = 4;
if( letra == '5' ) numero = 5;
if( letra == '6' ) numero = 6;
if( letra == '7' ) numero = 7;
if( letra == '8' ) numero = 8;
if( letra == '9' ) numero = 9;
if( letra == '.') numero = 27;
return numero;
}
float ataf_Renan(char *astring)
{
int i, tamanho, incremento, pos_ponto;
char numero_char;
float numero_float, retorno;
tamanho = strlen(astring);
retorno = 0;
incremento = 0;
for(i=0; i<tamanho; i++) if( retorna_numero(astring[i]) == 27 ) break;
pos_ponto = i;
if( pos_ponto == tamanho ) pos_ponto = 0;
for( i=0; i<tamanho; i++ )
{
numero_char = astring[i];
numero_float = retorna_numero(numero_char);
if( numero_float == 27 ) incremento = -1;
if( incremento == 0 )
{
if( i == pos_ponto-1 ) retorno += numero_float;
else retorno += numero_float*pow(10,pos_ponto-1-i);
}
else if(numero_float != 27)
{
retorno += numero_float*pow(10,incremento);
incremento--;
}
}
return retorno;
}
main()
{
char *nada;
nada = (char*)malloc(10*sizeof(char));
nada = "0.05879";
printf("\n\n%.5f\n\n",ataf_Renan(nada));
system("pause");
}
Pergunta
renan_doidera
Eu estava procurando uma função para converter string em float, então soube que existe uma que faz isso, a ataf(). Só que eu não consegui usar aqui, sabe-se láh por que, o meu compilador não achou mesmo declarando a biblioteca certa. Então eu resolvi fazer ela pra mim usar, já que eu fiz eu vou postar aqui e talvez possa ser útil pra quem tenha enfrentado mesmo problema que eu , ou para até questão de aprendizadomesmo....
#include <stdio.h> #include <stdlib.h> #include <math.h> int retorna_numero(char letra) { int numero; if( letra == '0' ) numero = 0; if( letra == '1' ) numero = 1; if( letra == '2' ) numero = 2; if( letra == '3' ) numero = 3; if( letra == '4' ) numero = 4; if( letra == '5' ) numero = 5; if( letra == '6' ) numero = 6; if( letra == '7' ) numero = 7; if( letra == '8' ) numero = 8; if( letra == '9' ) numero = 9; if( letra == '.') numero = 27; return numero; } float ataf_Renan(char *astring) { int i, tamanho, incremento, pos_ponto; char numero_char; float numero_float, retorno; tamanho = strlen(astring); retorno = 0; incremento = 0; for(i=0; i<tamanho; i++) if( retorna_numero(astring[i]) == 27 ) break; pos_ponto = i; if( pos_ponto == tamanho ) pos_ponto = 0; for( i=0; i<tamanho; i++ ) { numero_char = astring[i]; numero_float = retorna_numero(numero_char); if( numero_float == 27 ) incremento = -1; if( incremento == 0 ) { if( i == pos_ponto-1 ) retorno += numero_float; else retorno += numero_float*pow(10,pos_ponto-1-i); } else if(numero_float != 27) { retorno += numero_float*pow(10,incremento); incremento--; } } return retorno; } main() { char *nada; nada = (char*)malloc(10*sizeof(char)); nada = "0.05879"; printf("\n\n%.5f\n\n",ataf_Renan(nada)); system("pause"); }É isso,
Abraços.
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.