我的工作邮箱项目结构,我有这两种结构:写入和读取(fwrite的 - FREAD)与指针
结构mmbox_mail
struct mmbox_mail {
char *sender, *recipient;
char *obj, *date;
char flags;
size_t size;
};
和
mail_t
typedef struct{
struct mmbox_mail info;
void *body;
void *next;
} mail_t;
我无法修改结构的字段,因为我需要变量数据(为此目的,我使用char *而不是char [])。
每个mail_t结构都是一封邮件。我需要将用户的每封邮件保存在一个文件中,这可能是二进制文件或文本文件(但我认为使用二进制文件更好,因为我有void*
正文,难以用纯文本保存。我试图做到这一点,但现在看来似乎不起作用:
while(mailtmp != NULL){
fwrite(mailtmp, sizeof(mail_t), 1, fp);
/* next mail */
mailtmp=mailtmp->next;
}
while(mailtmp != NULL){ /* i have a list of mails and i use a mailtmp pointer to save each mail */
你能帮助我,我试着到处寻找,但我从来没有发现有人问,以节省二号呢?结构,一个在另一个内。
我试过这种方法,但我发现一个问题是:如何在纯文本中保存void * body?我的意思是,电子邮件的正文可能是各种数据,所以我不能将它保存为纯文本。 O.o – user1111399 2011-12-22 09:47:51
那么电子邮件格式本质上是明文的。连接到电子邮件的二进制文件是base64'd,允许通过明文协议传输。你可以编写一个解析器来从电子邮件中提取实际的文本;你可以解析出这些文件,解开它们,并将它们写入文件;你可以做任何你想做的事。然而,你的问题的范围并不包括这一点,完全取决于你决定如何去做这件事。 – Kaslai 2011-12-22 10:16:48
对不起,但我是一个“自制”项目,我想在本地运行,而不是远程..所以我正在寻找一些不太复杂的东西:)在未来,我将实现功能,使其远程运行,但此刻我想让它在本地工作.. :)无论如何,谢谢! :D – user1111399 2011-12-22 14:17:09