把menu_t的double类型数据改为int数据之后就可以正常读取了,这是不是意味着写入的时候出了问题
这是我的代码。
#include<stdio.h>
#include"CFile.h"
#include"Clist.h"
#include<string.h>
#include<stdlib.h>
void File_Userread();
int userCount=3;
int menuCount=3;
void File_Userwrite(USER_T user[]);
void File_Menuread();
void File_Menuwrite(MENU_T arr[]);
USER_T userArr[10]={
{1001,"Lily","123123",1},
{1002,"Tony","123456",2},
{1003,"Bot","123321",3}
};
MENU_T menuArr[10]={
{1001,"肉蛋葱鸡","下饭神器",6},
{1002,"不响丸","麻辣",7},
{1003,"肾炝洗鲤","好吃多一点点",8}
};
int main()
{
File_Userwrite(userArr);
File_Userread();
File_Menuwrite(menuArr);
File_Menuread();
return 0;
}
void File_Userread()
{
//1.文件打开
FILE *fp=NULL;
USER_T *puser =NULL;
LIST_T *userhead=list_init();
fp=File_open("data/user.txt");
if(NULL == fp)
{
printf("打开失败\n");
exit(0);
}
else
printf("打开成功\n");
//2.指针位置设置开头位置
rewind(fp);
puser =(USER_T *)malloc(sizeof(USER_T));
memset(puser,0,sizeof(USER_T));
//3.读取数据
while(fread(puser,sizeof(USER_T),1,fp)>0)
{
listAdd(userhead,puser);//添加到用户结构体链表中
printf("id=%d,name=%s,pwd=%s,role=%d\n",puser->id,puser->name,puser->pwd,puser->role);
}
//4.文件关闭
fclose(fp);
}
void File_Userwrite(USER_T user[])
{
int i=0;
FILE *fp=NULL;
fp=File_open("data/user.txt");
if(NULL == fp)
{
printf("打开失败\n");
exit(0);
}
else
{
printf("打开成功\n");
}
//2.文件定位
rewind(fp);
//3.文件写入
for(i=0;i<userCount;i++)
{
fwrite(&user[i],sizeof(USER_T),1,fp);
fflush(fp);
}
fclose(fp);
}
void File_Menuread()
{
//1.文件打开
FILE *Menufp=NULL;
MENU_T *pmenu =NULL;
LIST_T *menuhead=list_init();
Menufp=File_open("data/menu.txt");
if(NULL == Menufp)
{
printf("打开失败\n");
exit(0);
}
else
printf("打开成功\n");
//2.指针位置设置开头位置
rewind(Menufp);
pmenu =(MENU_T *)malloc(sizeof(MENU_T));
memset(pmenu,0,sizeof(MENU_T));
//3.读取数据
while(fread(pmenu,sizeof(MENU_T),1,Menufp)>0)
{
listAdd(menuhead,pmenu);//添加到用户结构体链表中
printf("id=%d,name=%s,info=%s,price=%d\n",pmenu->id,pmenu->name,pmenu->info,pmenu->price);
}
//4.文件关闭
fclose(Menufp);
}
void File_Menuwrite(MENU_T arr[])
{
int i=0;
FILE *Menufp=NULL;
Menufp=File_open("data/menu.txt");
if(NULL == Menufp)
{
printf("打开失败\n");
exit(0);
}
else
{
printf("打开成功\n");
}
//2.文件定位
rewind(Menufp);
//3.文件写入
for(i=0;i<menuCount;i++)
{
fwrite(&arr[i],sizeof(MENU_T),1,Menufp);
}
fflush(Menufp);
fclose(Menufp);
}