lowen_666 2015-06-04 16:13 采纳率: 0%
浏览 3006
已结题

c++访问冲突不知怎么解决

#include
#include
#include
#include
using namespace std;
class Account
{
public:
Account();

Account(int);
friend void Regiser();
friend int SameAccount(char []) ;
friend void Login();
friend int SamePassword(char []);
friend void ChangePassword();
private:
char Password[50];
char Name[50];
char Problem[3];
char *ProblemAnswer[3];
char
Address;
char account[50];
int mark;
};
Account::Account()
{
mark=1;
Address=new char[50];
Address="d:\";
for(int i=0;i {
Problem[i]=new char[50];
ProblemAnswer[i]=new char[50];
}
}
Account::Account(int i)
{
mark=0;
Address=new char[50];
for(int i=0;i {
Problem[i]=new char[50];
ProblemAnswer[i]=new char[50];
}
}
void Regiser()
{
Account *a1=new Account;
char TempPassword [50];
cout cin>>a1->account;
while(SameAccount(a1->account))
{
cout<<"你输入的账户名已经被注册,请输入另一个账户名"< cin>>a1->account;
}
strcpy(a1->Address,a1->account);
strcat_s(a1->Address,4,".dat");

cout<<"(监测)a1->Address"<<a1->Address<<endl;
cout<<"a1->account  (监测)"<<a1->account<<endl;

cout<<"请输入你的名字"<<endl;
cin>>a1->Name;
cout<<"请输入你的登录密码"<<endl;
cin>>a1->Password;
cout<<"请再次输入你的登录密码"<<endl;
cin>>TempPassword;
while(strcmp(a1->Password,TempPassword)!=0)           //若前后两次输入密码不一致
{
    cout<<"前后两次输入的密码不一致,请重新设置密码"<<endl;
    cout<<"请输入你的登录密码"<<endl;
    cin>>a1->Password;
    cout<<"请再次输入你的登录密码"<<endl;
    cin>>TempPassword;
}
cout<<"&&&&&————密码设置成功,接下来请设置你的密保————*****"<<endl;
cout<<"请输入第一个密保问题"<<endl;
cin>>a1->Problem[0];
cout<<"请输入第一个密保问题的答案"<<endl;
cin>>a1->ProblemAnswer[0];
cout<<"请输入第二个密保问题"<<endl;
cin>>a1->Problem[1];
cout<<"请输入第二个密保问题的答案"<<endl;
cin>>a1->ProblemAnswer[1];
cout<<"请输入第三个密保问题"<<endl;
cin>>a1->Problem[2];
cout<<"请输入第三个密保问题的答案"<<endl;
cin>>a1->ProblemAnswer[2];
fstream FileAddress(a1->Address,ios::out|ios::binary);          //用 用户账号建立一个文件
if(!FileAddress)
{
    cout<<"注册时新文件没有正常建立"<<endl;
    abort();
}
FileAddress.close();
fstream File("d:\\C++File.dat",ios::out|ios::binary|ios::in);         //打开储存所有账户的文件

if(!File)
{
    cout<<"注册时总文件未能正常打开"<<endl;
    abort();
}
Account *a2=new Account;
File.seekg(0,ios::beg); 
do{
    File.read((char*)&(*a2),sizeof(Account)); 
}while(File&&a2->mark!=0);
delete a2;
File.seekp(-long(sizeof(Account)),ios::cur);
File.write((char*)&(*a1),sizeof(Account));
delete a1;
Account *mark=new Account(1);  
File.write((char*)&mark,sizeof(Account));          //在文件末 写入 空标志;
delete mark;
File.close();
cout<<"密保设置成功,注册完成!"<<endl;
a1=NULL;
a2=NULL;

}
int SameAccount(char account[])

{
Account *a11=new Account;
fstream File("d:\C++File.dat",ios::in|ios::binary);
if(!File)
{
cerr<<"在调用检查帐户名是否一致时的函数中文件没有正常打开"< abort();
}
File.seekg(0,ios::beg); //流指针指向文件头
do
{
File.read((char *)&(a11),sizeof(Account));
if(strcmp(a11->account,account)==0)
return 1;
}while(File&&a11->mark!=0);
File.close();
delete a11;
a11=NULL;
return 0;

}

部分代码如上,在我调用Regiser()函数,里面调用SameAccount()函数判断我输入的账号在文件中是否已存在,然后当执行到 if(strcmp(a11->account,account)==0)语句时,就发生访问冲突图片说明

怎么破,究竟哪里出问题了!!

  • 写回答

6条回答 默认 最新

  • 知常曰明 2015-06-04 22:39
    关注

    运行的时候all是否为NULL,如果ALL是NULL的话,all->account就会出异常。

    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突