私の目標は、「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;
};