Jump to content

duvida: interpretar caracteres da linha de comando


Fitorinaudo

Recommended Posts

Se definires a funcao main com os parametros [t]argc[/tt] e argv podes usar esses parametros para identificar os argumentos passados na linha de comandos.

[t]argc[/tt] tem o numero de argumentos

O array [t]argv[/tt] tem cada um dos argumetnos, incluindo quando possivel, o nome do programa.

Ora experimenta:

#include <stdio.h>

int main(int argc, char **argv) {
 int k;
 for (k = 0; k < argc; k++) {
   printf("argumento #%d: %s\n", k, argv[k]);
 }
 return 0;
}

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

o que eu tenho de escrever na linha de comandos:

./exercicio A 1 A 2 A 3.

Objectivo disto: adicionar o 1, dps adicionar o 2 ao 1, e dps adicionar o 3 ao 2 + 1.

Ou seja o A, tem de chamar uma função que faça a soma dos argumentos certo?

Como eq isso se faz, essa relação?

Obrigado

essa explicação continua a não fazer muito sentido, afinal para que serve o A ?

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Certo eu isso percebo. Agora outra dúvida. Esta função é so para fazer um somatorio de numeros dados nos argumentos. Podem-me ajudar com o erro sff? Diz 'Core Dumped'.

#include <stdio.h>
#include <stdlib.h>

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



printf("A soma dos números dado dá: %d\n", soma(argc, *argv));

return 0;
}




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

int somatorio;

int i=0;//Serve para percorrer o vector.

for(i = 1 ; i < argc ; i++)
somatorio += atoi(argv[i]);
//Somatorio vai somando os 'numeros' que sao convertidos de chars para inteiros com a função atoi.

return somatorio;
}

HappyHippyHippo

o A serve para chamar um método que adiciona o número que está logo depois do A. Como é que isso se faz?

Edited by pmg
GeSHi
Link to comment
Share on other sites

Podem-me ajudar com o erro sff? Diz 'Core Dumped'.

Duas coisas importantes:

1) falta-te um prototipo 'activo' para a funcao soma quando a chamas na main.

2) nao incializaste a variavel somatorio. O resultado pode ser uma coisa qualquer.

Nota: como que queres que o teu programa se comporte com os arguemntos "A 1 A 2 A 3" (nomeadamente os 'A')?

Edited by pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

1) acrescenta antes da funcao main a linha com o prototipo da funcao soma

int soma(int argc, char *argv[]);

2) para inicializares uma variavel, na linha onde a defines acrescenta um = e um valor

int somatorio = 0;

OUTRA COISA: liga o maximo de warnings do teu compilador e corrige-os todos antes de aceitares um programa como terminado.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Peço desculpa pelo o meu desconhecimento em relação o pq de 1.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[]){
printf("A soma dos números dado dá: %d\n", soma(argc, argv));
return 0;
}


int soma(int argc, char *argv[]){
int somatorio=0;
int i=0;//Serve para percorrer o vector.
for(i = 1 ; i < argc ; i++)
somatorio += atoi(argv[i]);
//Somatorio vai somando os 'numeros' que sao convertidos de chars para inteiros com a função atoi.
return somatorio;
}

no vs sem problemas

Edited by Marzkor
Link to comment
Share on other sites

Podes meter o erro aqui ? Fizeste copy paste do meu codigo ?

A unica coisa que o VS deu foi um warning mas a resolução é esta

#include <stdio.h>
#include <stdlib.h>
int soma(int argc, char *argv[]){
int somatorio=0;
int i=0;//Serve para percorrer o vector.
for(i = 1 ; i < argc ; i++)
somatorio += atoi(argv[i]);
//Somatorio vai somando os 'numeros' que sao convertidos de chars para inteiros com a função atoi.
return somatorio;
}
int main(int argc, char * argv[]){

printf("A soma dos números dado dá: %d\n", soma(argc, argv));
return 0;
}

Primeiro as Funções e depois o Main.

Edited by Marzkor
Link to comment
Share on other sites

soma.c: In function ‘soma’:

soma.c:8:20: error: ‘argv’ undeclared (first use in this function)

soma.c:8:20: note: each undeclared identifier is reported only once for each function it appears in

soma.c:8:28: error: expected ‘;’ before ‘)’ token

soma.c:8:28: error: expected statement before ‘)’ token

copiei o teu codigo e aparece isto na linha de comandos

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.