Rasdan wrote:
>
> So, I have done this:
>
> struct player_index_element {
> char *name;
> int id;
>
> struct player_index_element *next;
> }
>
> Then basically, did this:
>
> void load_player_index(void)
> {
[...]
> create_pfile_entry(&pie);
> }
> fclose(file);
> }
> void create_pfile_entry(struct player_index_element *pie)
> {
> struct player_index_element *pindex;
>
> pie->next = NULL;
>
> CREATE(pindex, struct player_index_element, 1);
>
> *pindex = *pie;
Do you want to copy the data here?
With this, you are copying only the first four bytes (or something) of
your pointer. If your structure is
struct player_index_element {
struct player_index_element *next;
char *name;
int id;
}
then you get a complete linked list, but with all the data screwed... no
names and no ids, of course.
The better way to do this is using the memcpy function:
void *memcpy(void *dest, const void *src, size_t n);
void create_pfile_entry(struct player_index_element *pie)
{
struct player_index_element *pindex;
pie->next = NULL;
CREATE(pindex, struct player_index_element, 1);
memcpy( pindex, pie, sizeof( struct player_index_element ) );
pindex->next = player_table;
player_table = pindex;
}
(well, i supose that player_table is a struct player_index_element * )
Tell me if this works.
Bye!
P.S.: Sorry for my english...
--
Leonardo Herrera L.
mailto:leherrer@entelchile.net
"Me voy a subai, me voy a costai, me voy a tapai y
me voy a hacei tuto."
-- Ruy
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST