Conversão vetor de caracteres para double

Publicado por Kleber de Andrade Reis em 04/11/2004

[ Hits: 9.150 ]

 


Conversão vetor de caracteres para double



Essa dica mostra como funciona a conversão de um vetor de caracteres em double.

Qualquer dúvida me questionem!

#include<stdio.h>

double expo(int a, int b)
{
    int i,aux;
    double ex=1;
    
    if(b<0)
        aux=-b;
    else
        aux=b;  

    for(i=1;i<=aux;i++)
        ex=ex*a;
    if(b>=0)    
        return (ex);
    else
        return (1/ex);
}
        

double atof(char s[])
{
    double val,pot,ex;
    int i,sinal,sig=1,nc;
    
    for(i=0;s[i]==' '||s[i]=='\n'||s[i]=='\t';i++)
    ;
    sinal=1;
    if(s[i]=='+'||s[i]=='-')
        sinal=(s[i++]=='+')?1:-1;
        
    for(val=0;s[i]>='0'&&s[i]<='9';i++)
        val=10*val+s[i]-'0';
    if(s[i]=='.')
        i++;
          
    for(pot=1;s[i]>='0'&&s[i]<='9';i++){
        val=10*val+s[i]-'0';
        pot*=10;
    }
    
    ex=1;
    if(s[i]=='e'||s[i]=='E')
    {
        i++;
        if(s[i]=='+'||s[i]=='-')
        {
                sinal=(s[i]=='+')?1:-1;
                i++;
        }    
        for(nc=0;s[i]>='0'&&s[i]<='9';i++)
            nc=(10*nc+s[i]-'0')*sinal;
                
        ex=expo(10,nc);
    }    
            
    return((sinal*val/pot)*ex);
}

main()
{
    double soma;
    char c,linha[1000];
    int i=0;
    
    soma=0;
    printf("Digite a string a ser convertida\n\n");
    c=getchar();
    while(c!='\n')
    {
        linha[i]=c;
        c=getchar();
        i++;
    }
    linha[i]='{TEXTO}';
    printf("\n%f\n",soma+=atof(linha));
}
Outras dicas deste autor

Desligando Slackware com fonte ATX automaticamente

Ocorrência de uma string em outra

Função recursiva para inverter um vetor de caracteres

Leitura recomendada

Função recursiva para inverter um vetor de caracteres

Compilando e executando programas em C no Linux

Desenvolvimento com C/C++ e GTK

Gerando números aleatórios em C

Switch em C, e se a opção for inválida?

  

Comentários
[1] Comentário enviado por kandrade em 05/11/2004 - 08:24h

Essa função atof......já existe na stdlib.h........
meu professor passou uns exercícios do livro ANSI C dos criadores da linguagem C.........e um dos exercícios pedia para vc criar ou melhor recriar essa função............

[2] Comentário enviado por jochan em 14/12/2005 - 14:43h

Muito legal, vai me ajudar bastente no meu projeto de C++ ... =)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts