+ Responder ao Tópico



  1. #1

    Padrão string to integer

    Olha, so eu estou com um probleminha, e o seguinte, tenho um programa que faz uns calculos baseados em uma string. certo. entretanto surge um problema. para os calculos serem efetuados ele prescisar ser um numero inteiro ou ponto flutuante.

    entao eu tenho um string mais ou menos asim.
    // no programa original o user passa a string.

    char *str[] = "256781";

    eu presciso de todos esses digitos separadamente e o ultimo tambem.

    entao eu tenho usado.

    dv = atoi(str[5]);
    so que isso da erro, segment fault, rodei o gdb e ele mostra erro na stroul_internal , que eh responsavel pela conversao.

    quando eu utilizo somente.

    dv = atoi(str);

    o dv recebe a string toda, como inteiro, funciona perfeito, mas eu nao quer o isso. resolvendo esse problema eu faco os outros calculos necessarios.

    em suma o problema eh esse. eu presciso resolver esse problema antes das 18:50 que eh o horario que a aula comeca, entao se voces puderem mandar o maximo de sugestoes possiveis eu agradeco, se passar das 7h nao da pois a aula jah comecou.

    obrigado,


  2. #2
    modesto
    Visitante

    Padrão string to integer

    faça um laço convertendo a string para ascII, depois voce retira os numeros desejados acessando o indice que vc ker.

    Exemplo:

    char str[]="2,3,4,5";
    int matriz[];

    for(i=0;i<(strlen(str));i++)
    matriz[i]=str[i];

    e ai eh soh puxar o indici da matriz "matriz[]" para uma variavel;

    modesto

  3. #3

    Padrão string to integer

    faça na mão .... toda caracter tem seu código ascii....
    faça o seguinte...

    digamos q vc tenha um vetorl inteiro b.

    char str[7];
    int b[6];

    scanf("%s", str);

    //digamos q a pessoa tenha digitado 256781

    //codigo ascii de "0" = 48
    //então 48 valor asciii - 48 int = 0 int
    //codigo ascii do char "1" = 49
    // 49 - 48 = 1 int

    b[0] = str[0] - 48;
    b[1] = str[1] - 48;
    b[2] = str[2] - 48;
    b[3] = str[3] - 48;
    b[4] = str[4] - 48;

    cada posição do vetor b terá o valor inteiro correpondesnte ao caracter...

  4. #4

    Padrão string to integer

    se vc quiser transformar o vetor b num número só igual a string digitada é simples...

    w = 0;
    a = 100000;
    for(x = 0; x < 5; x++){
    w = w + b[x] * a;
    a = a / 10;
    }

    /*
    200000
    +50000
    + 6000
    + 700
    + 80
    + 1
    ---------
    256781
    */