Problemas no EP2

Problemas no EP2

por William Miyasaka -
Número de respostas: 1
Olá pessoal...

Estou tendo o seguinte problema:

na hora de atribuir os valores para as variaveis na funcao MAIN dos nL, nC, nB
e semente obtidos na linha de comando, o valor que é devolvido não é o
mesmo do digitado.

Por exemplo: ~$cm 1 2 3 4 (chamando a funcao na linha de comando, com os
argumentos nL, nC, nB, semente).
Quando eu dou um printf para os valores obtidos, sai os seguintes numeros:
~$ 49 50 51 52

1 é != de 49
2 é != de 50
3 é != de 51
4 é != de 52

Por que isto está ocorrendo?

O script é que o segue abaixo:

int main(int argc, char *argv[]){

int nL = (int)*argv[1];
int nC = (int)*argv[2];
int nB = (int)*argv[3];
int semente = (int)*argv[4];

printf("%d\n", nL);
printf("%d\n", nC);
printf("%d\n", nB);
printf("%d\n", semente);

return 0;
}

Em resposta à William Miyasaka

Re: Problemas no EP2

por Ricardo Carvalho -
O que está acontecendo é que o casting está convertendo a entrada em valores da tabela ASCII (por exemplo o caractere 'A' deve retornar 65), isso acontece pois um char tmabém tem uma representação como número, para solucionar o problema basta usar a função atoi() que o professor explicou em classe, as declarações do seu código deveriam então ficar da seguinte maneira:

int nL = atoi(argv[1]);
int nC = atoi(argv[2]);
...