vs2010写代码时,出现了问题,求解答!!在线等
我使用MFC写一个代码,里面有几个类,为:Cmannager ,mannager, Cregister。然后在Cregister中代码点击ok代码如下:
void Cregist::OnBnClickedOk()
{
// TODO: 注册 用户名user 密码password
UpdateData();
char user[20],password[15];
mannager mann1;
Cmannage manna;
if(USER.IsEmpty())
{
MessageBox(_T("用户名不能为空!"));
return;
}
if(!USER.IsEmpty())
{
if(PASSWORD.IsEmpty())
{
MessageBox(_T("密码不能为空"));
return;
}
}
sprintf(user,"%s",USER);
sprintf(password,"%s",PASSWORD);
mann1.add_s(user,password);
manna.DoModal();
CDialog::OnOK();
}
调用了另一个对话框,Cmannager,里面的ok代码如下:
void Cmannage::OnBnClickedOk()
{
// TODO: Jizhong 集中式,Fensan 分散式,Sfensan受限分散
UpdateData();
mannager test;
if(Choose==0)
{
test.choose_fensan(); -----------------------------------------此处是出问题的地方
}
else if(Choose==1)
{
MessageBox(_T("1"));
}
else if(Choose==2)
{
MessageBox(_T("2"));
}
else
{
MessageBox(_T("必须选取一项!"));
return;
}
CDialog::OnOK();
}
mannager里面主要的几个函数和结构:
public:
struct s_table /*主体表*/
{
char sname[20];
char password[15];
int num_o;
char info[100];
int mannage;/*1为集中式,2为分散式,3为受限分散式*/
struct s_table *next;
};
struct s_table *s;
void mannager::choose_jizhong()
{
(s->mannage)=1; -------------------------------------出问题的地方
}
在此之前已经已经经过该函数处理:
int mannager::add_s(char name[20],char password[15])
{
struct s_table *p;
if(s==NULL)
{
p=(struct s_table *)malloc(sizeof(struct s_table));
strcpy(p->sname,name);
strcpy(p->password,password);
p->num_o=0;
p->mannage=1;
p->next=NULL;
s=p;
return 1;
}
p=(struct s_table *)malloc(sizeof(struct s_table));
strcpy(p->sname,name);
strcpy(p->password,password);
p->num_o=0;
p->mannage=1;
p->next=s;
s=p;
return 1;
}
编译都没有问题,但是运行到要用到上面的时候,出现问题
mannageCXX0030: 错误: 无法计算表达式的值
我查了一下,那个是没有分配空间。但是之前我已经分配了,经过了那个函数的处理。
希望各位大神能帮我解答一下!!!谢谢!!!