我的目标是从“menu.bin”创建一个列表。这是函数:
pitem recupera_menu(pitem p){
pitem novo,aux;
FILE *f;
f=fopen("menu.bin","rb");
if(f == NULL)
printf("Erro ao caregar o ficheiro 'menu.bin' \n");
novo = (struct item*)malloc(sizeof(item));
if(novo == NULL)
return p;
novo->prox=NULL;
while((fread(novo,sizeof(item),1,f))!=NULL){
if(p==NULL){
p=novo;
aux=p;
}
else{
aux->prox=novo;
aux=aux->prox;
}
printf("%s\n OLE\n",aux->id);
}
fclose(f);
system("pause");
return p;
}
这是我的结构:
typedef struct item item, *pitem;
struct item{
char id[5];
int ing[10];
float qtd[10];
pitem prox;
};
出于某种原因,文件的结果不是应该的(它不读取文件海峡)。也许有人可以帮助我。
编辑:它确实运行了,并打印了“ole”行。问题是文件 .bin 已使用以下结构类型完成:
struct item{
char id[5];
int ing[10];
float qtd[10];}
当我做 malloc 时,我将内存分配给以下结构类型:
struct item{
char id[5];
int ing[10];
float qtd[10];
pitem prox;
};