这是类的成员函数
void user::shuru()
{
ofstream Users;
Users.open("Users.txt", ios::out|ios::app); //追加写入
cout << "请输入用户名:";cin >> username;
cout << "请设置密码:";cin >> key;
cout << "请输入姓名:";cin >> name;
cout << "请输入手机号码:";cin >> iphone;
Users<< username << " "<<key<<" "<< name << " " << iphone<<endl;
Users.close();
}
我的思路是将每次输入的用户保存在文件中,在下一次打开程序运行时,先提前把文件中的数据读取到对象数组中,在进行之后的一系列功能,代码如下:
string ming, pass;int v=0;
cout << "请输入用户名:"; cin >> ming;
ifstream ifs;
string a, b,c,d;
ifs.open("Users.txt", ios::in);
if (ifs.is_open())
{
cout << "打开成功";
}
else cout << "打开失败";
int j = 0;
while (ifs >> a>> b>> c>> d)
{
u[j].set(a, b, c, d);
j++;
}
ifs.close();
但是再次打开程序运行时,不能很好地一一对应准确读取文件中的内容并赋给对象数组,应该怎么修改,求解答。
不知道你这个问题是否已经解决, 如果还没有解决的话:格式
if((fp=fopen(filename,“w”))==NULL)
格式:(fp=fopen(filename,"w"))
整体小括号,判断是否为空
if((fp=fopen("D:\\CC\\string.bat","w"))==NULL)
指定其他磁盘文件注意路径格式#include <stdio.h>
#include <string.h>
int main(){
FILE *fp;
char s[3][20],temp[20],filename[20];
int i,j,k;
for(i=0;i<3;i++){
printf("请输入第%d个字符串: ",i+1);
gets(s[i]);
}
for(i=0;i<3;i++){
k = i;
for(j=i+1;j<3;j++)
if(strcmp(s[k],s[j])<0) k = j;
if(k!=i){
strcpy(temp,s[i]);
strcpy(s[i],s[k]);
strcpy(s[k],temp);
}
}
printf("请输入磁盘文件名:");
scanf("%s",filename);
// if((fp=fopen("D:\\CC\\string.bat","w"))==NULL)指定其他磁盘文件注意路径格式
if((fp=fopen(filename,"w"))==NULL){
printf("打开文件失败!");
return;
}
printf("\n结果为:\n");
for(i=0;i<3;i++){
fputs(s[i],fp);
fputs("\n",fp);
printf("%s\n",s[i]);
}
}