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;
}
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]);
...
int nL = atoi(argv[1]);
int nC = atoi(argv[2]);
...