我的工作郵箱項目結構,我有這兩種結構:寫入和讀取(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