Writing and reading (fwrite - fread) structures with pointers

前端 未结 3 2086
北海茫月
北海茫月 2020-11-29 13:29

I\'m working on a mailbox project, and I have these two structures:

struct mmbox_mail

struct mmbox_mail {
  char *sender, *recipient         


        
3条回答
  •  醉酒成梦
    2020-11-29 14:22

    What you're doing is saving the literal binary representation of mail_t into the text file, which is just a bunch of pointers. What you want to do is something to the effect of:

    fprintf( fp, "To: %s\nFrom: %s\n....\nContents: %*s\n\n", mailtmp->info.recipient, mailtmp->info.sender, mailtmp->info.size, mailtmp->body );
    

    That will render the values pointed to as a string and save it to the file. A pointer to a location in memory held by your application is a bit useless to most people after said application closes ;)

    EDIT: "Could you help me? I tried to search everywhere but i never found someone that ask to save two structures, one inside one other."

    If you just had first class data types, such as ints or floats etc, your method would work perfectly. However, since you are using second class types, namely your char and void arrays, you have to actually specify how the data pointed to should be saved.

提交回复
热议问题