一千萬個為什麽

搜索

在C中寫入指向文件的指針

我有一個結構:

typedef struct student {
  char *name;
  char *surname;
  int age;
} Student;

我需要將它寫入二進制文件。

Student *s = malloc(sizeof(*s));

我用數據填充我的結構,然後我寫入文件:

fwrite(s, sizeof(*s), 1, fp);

在我的文件中不存在名稱和姓氏,它有char *的地址。 我如何寫一個單詞,而不是一個地址?

最佳答案

您需要取消引用指針並編寫結構的各個部分。 (你不應該直接編寫一個結構,而是編碼它的部分並編寫它們:

Student *s = malloc(sizeof(*s));
s->name = "Jon";
s->surname = "Skeet";
s->age = 34;

// ....

fwrite(s->name, sizeof(char), strlen(s->name) + 1, fp);
fwrite(s->surname, sizeof(char), strlen(s->surname) + 1, fp);

//This one is a bit dangerous, but you get the idea.
fwrite(&(s->age), sizeof(s->age), 1, fp); 

轉載註明原文: 在C中寫入指向文件的指針