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

pedro_miguel

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

8 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#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??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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);

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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); 
} 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora