Jump to content
DanielMor

Problema com um strcpy

Recommended Posts

DanielMor

Boas estou aqui com um ploblema que nao consigo resolver, desconfio que seja por causa de apontadores...

O que nao esta a funcionar como eu kero é um strcpy...

Eu tenho 2 estruturas definidas de tipos diferentes, uma declarada como registado e outra declarada como jogadores...(estao declaradas globalmente, fora da main)

E basicamente kero passar uma string da estrutura registado para outra string(nome).. e esta string nome é enviada para uma outra funçao onde vai guardar na estrutura jogadores...

Tem ai uma parte do codigo...

Como posso resolver isto??

void verificalogin( int tam, int numero)
//...........
//...........
          system("cls");
           printf("\nLogin com susseso\n\n Bom Jogo %s\n\n", registado[i].nome);//aparece o nome direito...

           strcpy(nome, registado[i].nome);//O tal erro
           printf("\n\n%s", nome);//Um teste.. e realmente nao aparece nada..
           adiciona(nome, numero);



void adiciona(char nome[], int numero)
{
     int i=0;    
     for(i=0;i<(numero);i++)
     {             
               if(jogadores[i].n_jogador==0)
               {
                          jogadores[i].n_jogador=(i++);
                          strcpy(jogadores[i].nome, nome);
                          return ;
               }
               
     }
     printf("ERRO\n");
     system("PAUSE");
     return ;
}

Obrigad....

Share this post


Link to post
Share on other sites
KTachyon

Podes mostrar a estrutura? E, já agora, a declaração do array de jogadores.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
DanielMor

typedef struct User{
        char id[20];
        char pass[20];
        char nome[30];
        }Utilizador;

typedef struct jog{
        int n_jogador;
        char nome[30];
        int pontos;
        }Jogador;

Jogador *jogadores;
Utilizador registado[MAX];

//.........
//........
jogadores=(Jogador *) calloc(numjogadores, sizeof(Jogador));

             if(jogadores==NULL)
                                printf("ERRO");

Sao estas...

eu axo que no strcpy tenho de enviar o & do registado.nome..

Share this post


Link to post
Share on other sites
KTachyon

Neps, não deve ser isso. Tens a certeza que os jogadores têm nome? Faz um print antes do strcpy() para confirmar.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
DanielMor

O erro ta mesmo aki... nesta funçao...

printf("\nLogin com susseso\n\n Bom Jogo %s\n\n", registado[i].nome);//aparece o nome direito...
strcpy(nome, registado[i].nome);//O tal erro
printf("\n\n%s", nome);//Um teste a string nome.. e nao aparece nada..

como a string nome nao tem nada quando xegua a funçao "adiciona"

a jogadores.nome tbem nao vai ter nada...

Share this post


Link to post
Share on other sites
KTachyon

Hmm... estava a olhar para a função errada. Mas já tens a resposta.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
DanielMor

mas eu nao consigo arranjar maneira de o 1º strcpy copie para a string nome...

Share this post


Link to post
Share on other sites
DanielMor

ja consegui resolver... nao sei bem o k era mas pronto... ja funciona direito

Share this post


Link to post
Share on other sites
RSFalcon7

porque não usas memória dinâmica nas strings, para não ter chatices com nomes grandes?

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

×
×
  • 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.