Lucas C. Postado Abril 28, 2011 Denunciar Share Postado Abril 28, 2011 Olá. Estou iniciando em C e estou com uma dúvida, não sei se é de newbie.. Possuo um struct Mem (na variável pDest) e este struct possui um apontador z do tipo char*Quero copiar esse char para uma variável char fora do struct... alguém sabe como posso proceder?fazer algo do tipo:char x = *pDest.z; ou char x = pDest.z;não da certo pois fala que estou requisitando um membro (z) em algo que não é struct ou unionObrigado!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 28, 2011 Denunciar Share Postado Abril 28, 2011 use a funcao strcpy(): http://www.cplusplus.com/reference/clibrary/cstring/strcpy/mas se você declarar x como char, ele só vai poder guardar 1 caractere. você teria q alocar como um ponteiro e alocar o espaco pra guardar.melhor como declarar como array, com o espaco já alocado, como esta no exemplo do link.agora, pela mensagem de erro q você passou, parece q você não ta é declarando a struct corretamente. poste o codigo q você usou. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lucas C. Postado Abril 29, 2011 Autor Denunciar Share Postado Abril 29, 2011 use a funcao strcpy(): http://www.cplusplus.com/reference/clibrary/cstring/strcpy/mas se você declarar x como char, ele só vai poder guardar 1 caractere. você teria q alocar como um ponteiro e alocar o espaco pra guardar.melhor como declarar como array, com o espaco já alocado, como esta no exemplo do link.agora, pela mensagem de erro q você passou, parece q você não ta é declarando a struct corretamente. poste o codigo q você usou.Obrigado pela respota kuroi. A questão do erro era apenas que eu tinha que colocar pDest->z em vez de pDest.zMas eu não estou entendendo o porque o char *z é um array... digo, é um apontador para um char, não? Mas de fato ele armazena strings.. por que não é char *z [] ?Obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 29, 2011 Denunciar Share Postado Abril 29, 2011 lucas, acontece q, basicamente, todo array é um ponteiro.se você declarou o z como char*, ele aponta pra uma area especifica da memoria. quando você tentar ler os dados armazenados nessa area (como char*), ele vai ler todos os carateres ate chegar no caracter 0 q delimita o final da string.por isso, funciona tb como se fosse um array de char, q declaramos como char[tamanho] por exemplo.agora, só q acontece q tem q ficar de olho na alocacao de memoria. se você declarar a variavel como char* ela é inicializada apontando pra um espaco de memoria qualquer e você não sabe o q tem la. a não ser q vc, posteriormente aponte-o pra um lugar onde você saiba q existe alguma string, ou caso você aloque dinamicamente algum espaco pra ele apontar, você não deve tentar acessar os dados da area pra onde ele esta apontando, porque você simplesmente não sabe onde é. pode ser qualquer lugar, inclusive areas de memórias reservadas pra outros programas, o q vai causar o seu programa a ser fechado, caso você tente acessar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Lucas C.
Olá.
Estou iniciando em C e estou com uma dúvida, não sei se é de newbie..
Possuo um struct Mem (na variável pDest) e este struct possui um apontador z do tipo char*
Quero copiar esse char para uma variável char fora do struct... alguém sabe como posso proceder?
fazer algo do tipo:
char x = *pDest.z; ou char x = pDest.z;
não da certo pois fala que estou requisitando um membro (z) em algo que não é struct ou union
Obrigado!!
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.