strcpy (Linguagem C)  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline



O código acima dá erro.
Funciona quando eu comento a seguinte linha:


Alguém manja o que está acontecendo?
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1715
Localização: Recife - PE
Offline

Suspeito que sizeof(Arv) não seja a mesma coisa que sizeof(struct arv).

Tente substituir a linha 14 por:

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires



tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1715
Localização: Recife - PE
Offline

Bah, acho que me enganei. Olhei muito rápido seu código e deduzi que você tinha declarado Arv como um ponteiro para a estrutura arv.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires



tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1715
Localização: Recife - PE
Offline

Bom, outra coisa que você pode tentar é realizar uma coerção no momento da alocação de memória:

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires



cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

Atente para:

jamirdeajr
JavaGuru
[Avatar]

Membro desde: 11/04/2009 18:35:22
Mensagens: 221
Localização: Curitiba
Offline

O strcpy copia o conteúdo do pointer, e no caso a sua estrutura só tem o pointer, sem alocar memória para que caiba seu conteúdo.
Os dois primeiros devem ter passado porque o número de bytes envolvidos é pequeno ("1" são 2 bytes e "cake" são 5). Já no terceiro estoura o espaço e sobrepoe algum espaço relevante da memória.
Então, você precisa fazer um malloc para cada um dos campos com o espaço necessário, sempre considerando +1 devido ao '0' no final dos arrays de char.

Blz

This message was edited 1 time. Last update was at 17/03/2011 15:23:59

jamirdeajr
JavaGuru
[Avatar]

Membro desde: 11/04/2009 18:35:22
Mensagens: 221
Localização: Curitiba
Offline

Complementando, ficaria algo assim:



cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

A memória já está alocada...
O strcpy só copia os endereços de um pointer pra outro, estou errado?
jamirdeajr
JavaGuru
[Avatar]

Membro desde: 11/04/2009 18:35:22
Mensagens: 221
Localização: Curitiba
Offline

Então,
para copiar os endereços bastava igualar, 'a->nome' passaria a utilizar o endereço de memória de 'nome':

O strcpy copia arrays terminados em zero de um endereço para o outro

Aqui tem uma explicação boa e o fonte do strcpy:
http://en.wikipedia.org/wiki/Strcpy

cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

Agradeço pela ajuda! =]
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team