Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

pedro_miguel

main(int argc, char *argv[]) como implementar isto?????

Recommended Posts

pedro_miguel

olá pessoal...

tou aqui com um problema... ke nao consigo resolver...

tenho o seguinte codigo

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

/*O CODIGO DEVE VIR AQUI*/

printf("%s",resultado);

}

e terá que ter como output...

$prog viva o forum

forum+o+viva

Agradecia ajuda... já tentei tudo.. nao consigo mesmo resolver o problema  :D

Share this post


Link to post
Share on other sites
Rui Carlos

Percorres o array argv, começando pelo fim, copiando cada string que ele contém para o resultado, e acrescentando um '+' depois de copiares cada string.

Deverás descartar o primeiro valor de argv, que é o nome do binário.

Share this post


Link to post
Share on other sites
pedro_miguel

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

main(int argc, char *argv[]) 
{
char resultado[100];
int x,y,z=0;

for(x=1; x<argc; x++){
	for(y=0; y<50; y++)
	{
		if(argv[x][y]!='\0'){
		resultado[z]=argv[x][y]; z++;
		}


else{

	resultado[z]= '+'; z++;	
	break;}
	}

}		
resultado[z-1]= '\0'; 
printf("%s",resultado);

}

tenho isto e coloca-me o output sem reverter a ordem... mas quando faço para mudar a ordem..dá-me erro...

poderiam ajudar-me mesmo a modificar alguma coisa no codigo pa funcionar por favor??

Share this post


Link to post
Share on other sites
pedro_miguel

ESTA É QUE ESTÁ CORRECTA

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

main(int argc, char *argv[])
{
char resultado[100];
int x,y,z=0;

   for(x=1; x<argc; x++){
      for(y=0; y<50; y++)
      {
         if(argv[x][y]!='\0'){

         resultado[z]=argv

    * [y]; z++;

         }
         
      
else{
      
      resultado[z]= '+'; z++;   
      break;}
      }
      
}      
resultado[z-1]= '\0';
printf("%s",resultado);

}

Share this post


Link to post
Share on other sites
Rui Carlos

Para começar, talvez seja boa ideia estudar a função strdup (se bem que a sua utilização aqui obriga a perceber um pouco de apontadores).

Para inverter a ordem deverá bastar alterar a seguinte linha:

for(x=1; x<argc; x++)

Em vez de começar em 1 e acabar em (argc-1), começa em (argc-1) e acaba em 1.

Share this post


Link to post
Share on other sites
pedro_miguel

ja funciona :D obgdo pessoal...

se mais alguem alguma vez por acso precisar aqui esta a solução correcta

#include <stdio.h> 

void main(int argc, char *argv[]) { 
  char resultado[100]; 

  int index = 0; 
  int i, j; 

    /* o seu código deve estar colocado aqui */ 
  for (i = argc - 1; i > 0; i--) { 
    for (j = 0; argv[i][j]; j++) 
      resultado[index++] = argv[i][j]; 
    resultado[index++] = '+'; 
  } 
  resultado[--index] = 0; 
  printf("%s",resultado); 
} 

Share this post


Link to post
Share on other sites
Warrior

Habitua-te a declarar o main como "int" e a devolver 0.

Esse erro que estás a cometer é um dos erros mais cometidos, mas tenta não cair no mesmo.

Share this post


Link to post
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

×

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.