Tag: 结构

用指针编写和读取(fwrite – fread)结构

我正在研究一个邮箱项目,我有这两个结构: struct 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 […]

C,从文件读入结构

几天来我一直在努力,我无法弄清楚为什么它不起作用。 我正在尝试从文件中读取带有这样的数字的数字: 0 2012 1 1 2000.000000 0 2012 1 1 3000.000000 1 2012 1 1 4500.000000 我的结构: struct element{ int id; int sign; int year; int month; double amount; struct element *next; }; struct queue{ struct element *head; struct element *tail; struct element *head2; struct element *temp; struct element *temph; int size; }; (head2,temp和temph用于排序结构) […]

“malloc(sizeof(struct a *))”和“malloc(sizeof(struct a))”是否相同?

这个问题是Malloc调用崩溃的延续,但在其他地方有效 我尝试了以下程序,我发现它工作(即没有崩溃 – 这也在上面提到的链接中提到)。 我很幸运能让它工作但是我正在寻找SO专家对于它为何起作用的合理解释?! 以下是使用malloc() wrt structures和pointers分配memory一些基本知识 malloc(sizeof(struct a) * n)分配n个类型struct a元素。 并且,可以使用pointer-to-type-“struct a”的pointer-to-type-“struct a”来存储和访问该存储器位置。 基本上是一个struct a * 。 malloc(sizeof(struct a *) * n)分配n个类型struct a *元素。 然后,每个元素都可以指向struct a类型的元素。 基本上malloc(sizeof(struct a *) * n)分配一个array(n-elements)-of-pointers-to-type-“struct a” 。 并且,可以使用pointer-to-(pointer-to-“struct a”)来存储和访问所分配的存储器位置。 基本上是一个struct a ** 。 所以当我们创建一个array(n-elements)-of-pointers-to-type-“struct a” ,就是这样 有效将其分配给struct a *而不是struct a ** ? 有效访问/取消引用已分配的array(n-elements)-of-pointers-to-type-“struct a”使用pointer-to-“struct a” ? […]