Ir para conteúdo
Fórum Script Brasil
  • 0

Como copiar variável de um struct


Lucas C.

Pergunta

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

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0
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.z

Mas 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!

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...