Ir ao conteúdo
  • Cadastre-se

C Transformar um string char em int


Ir à solução Resolvido por isrnick,

Posts recomendados

Spoiler

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <math.h>
#define T 10

int oct_dec(char []);

int main(){
    int nc;
    char str[50];

    printf("Informe o numero octal:");
    gets(str);

    nc = oct_dec(str);

return 0;
}

int oct_dec(char *oct){
    int i, cv, soma, cont = 0;

    soma = 0;

    for(i = strlen(oct) - 1;i >= 0; i--){
        cv = oct[i] * pow(8, cont);
        cont++;
        soma = soma + cv;
    }

    printf("%d", soma);
    return(soma);
}

 

 

Estou com duvida para converter o numero dentro do vetor char para ele mesmo em int, por que quando faço a conta direto ele é convertido para o numero na versao da tabela ascii.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

Os caracteres dos dígitos indo de '0' a '9' estão em sequência na tabela ASCII, indo da posição 48 até 57 na tabela, então basta subtrair '0', que é o primeiro número da seqüência, do caractere que quer converter para obter o número inteiro correspondente.

oct[i] - '0'

 

Também poderia subtrair 48 que é o número do caractere '0', mas acho que subtrair '0' descreve melhor o que deseja fazer, além de não precisar saber qual é o número dele na tabela para chegar ao resultado.

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...