Conversão vetor de caracteres para double

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

[ Hits: 9.271 ]

 


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

Ocorrência de uma string em outra

Desligando Slackware com fonte ATX automaticamente

Função recursiva para inverter um vetor de caracteres

Leitura recomendada

Checagem de erro do scanf

Instalação do editor xwpe - Debian

Site para quem está iniciando em C

Utilizando funções em C++

Obtendo a data e a hora de compilação em C

  

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