类consumer
{private:char passwd[];
public:char num[];float money;}不要求文件中数据的排布。
谢谢大佬了。不需要太复杂,偏C语言些。再次感谢。
对象私有数据成员的赋值需要通过公有成员函数,为了简单些、偏C语言些,进行了简化,参考代码如下:
#include "stdio.h"
class consumer{
public:
char num[10];
char passwd[10];
float money;
} t,c[5];
int main()
{
FILE *fp;
int i;
fp=fopen("consumers.data","wb");
if(fp==NULL) {
printf("error\n");
return 0;
}
for(i=0; i<5; i++){
printf("请输入客户号、密码、金额:(以空格隔开、最后以回车结束)\n");
scanf("%s%s%f%*c",t.num,t.passwd,&t.money);
//注意输入格式为:字符串 空格 字符串 空格 浮点数 回车
fwrite(&t, sizeof(consumer), 1, fp);
}
fclose(fp);
fp=fopen("consumers.data","rb");
if(fp==NULL) {
printf("error\n");
return 0;
}
printf("文件读入结果如下:\n");
fread(c,sizeof(consumer),5,fp);
for(i=0; i<5; i++){
printf("%s %s %.2f\n",c[i].num,c[i].passwd,c[i].money);
}
fclose(fp);
return 0;
}
追问类的私有成员怎么赋值呢?
若是先读入到另一盒字符串,再用类给私有成员赋值的函数给私有成员赋值,会不会破坏私有成员的安全性呢?
文件块读写是过程化例程,把类当做了普通结构体,会对私有成员进行修改(会破坏安全性);
通过调用成员函数修改私有数据成员是C++类和对象一章最基本的,你再看看书好吧。。。
。。。。。
就是说不能对私有成员文件读写啊!
好吧,谢谢大佬
追答文件块读写只针对数据块,具体是什么保护属性是在类机制中约束的,二者根本就是两码事,所以要求你自己注意安全性。。。