困惑:指向结构体数组的指针不能做fwrite()/fread()的参数?
各位达人,我写一个练习代码,里面用到指向结构体数组的指针做fwrite()和fread()的参数,结果报错说fwrite()/fread()的第一个参数不匹配。例如:
#include <stdio.h>
#include <stdlib.h>
#define LEN 41
#define MAX 11
#define SIZE 10
typedef struct info {
char fname[LEN];
char lname[LEN];
int age;
char gender[MAX];
char post[LEN];
bool state;
}INFO;
void processdata(INFO *, int, FILE *);
int main(void)
{
INFO data[SIZE]; //这里data[SIZE]已初始化,具体内容就不敲了,请见谅
INFO * pp = &data[0];
int index;
FILE * fp;
if((fp = fopen("info.dat", "wb+")) == NULL)
{
fprintf(stderr, "Error opening file.");
exit(EXIT_FAILURE);
}
for(index = 0; index < SIZE; index++)
fwrite(pp[index], sizeof (INFO),1, fp);
processdata(pp, SIZE, fp);
fclose(fp);
return 0;
}
void processdata(INFO * pt, int n, FILE * fp)
{
int index;
puts("Data written:");
for(index = 0; index < n; index++)
{
fread(pt[index], sizeof(INFO), 1, fp);
if(pt[index]->state == true)
printf("\nFirst name: %s Last name: %s Age: %d Gender: %s Post: %s",
pt[index]->fname, pt[index]->lname, pt[index]->age, pt[index]->gender, pt[index]->post);
}
}
fwrite( &pp[index], sizeof (INFO),1, fp);