关于文件操作
void saving(){
Use p;
FILE *fp;
fp = fopen("D:\\新建文件夹file.txt", "rb");
fseek(fp,0L,SEEK_SET);
fread(&p, sizeof(Use), 1, fp);
printf("\n %s %s %s %lf", p.number, p.name, p.password, p.cash);
fclose(fp);
}这是一个子函数,我想读一个结构体 Use p
把文件中的内容 给 结构体 p ,但是输出后是其他的数据,乱码。为什么呢?
补充:我使用二进制写进文件的。运行结果
第一行是我在创建文件的子函数中以查询子函数同样的代码查询的。
在创建的子函数中可以查询。
但在另一个子函数中调用文件查询就不行了。出现第二行的乱码;
是我用动态申请内存造成的吗?
附加创建文件的函数:
void oaccount()//开户
{
//int last;
Use * p;
FILE *fp;
p = (Use *) malloc(sizeof(Use));
fp = fopen("D:\\新建文件夹\\file.txt", "ab");
printf("请输入账号:");
scanf("%s", p->number);
printf("请输入姓名:");
scanf("%s", p->name);
printf("请输入密码:");
scanf("%s", p->password);
p->cash=0;
//printf("请输入账号:");
//scanf("%hd", &p->mark);
//free(p);
fwrite(p, sizeof(Use), 1, fp);
fclose(fp);
//memset(p,0,sizeof(Use));
fp = fopen("D:\\新建文件夹\\file.txt", "rb");
//fseek(fp,0L,SEEK_END);
//last=ftell(fp);
//printf("%d,%d ",last,sizeof(Use));
fread(p, sizeof(Use), 1, fp);
printf("\n %s %s %s %lf", p->number, p->name, p->password, p->cash);
fclose(fp);
free(p);
}
[此贴子已经被作者于2017-3-10 10:48编辑过]