C++指针和字符串问题!! 80
我写一个职工信息管理系统具体代码如下typedefstructmessage{stringnumber;//职工号stringname;//姓名stringsex;//性...
我写一个职工信息管理系统具体代码如下
typedef struct message{
string number; //职工号
string name; //姓名
string sex; //性别
int age; //年龄
string education; //学历
int money; //工资
string address; //住址
string phone; //电话号码
struct message *next;
}Node,*pNode;
class MessageList{
public:
MessageList()
{
num=0;
count=0;
}
int read(); //读出当前文件里职员的个数
// bool judge(); //判断是否为空
pNode CreatLinklist(); //创建空链表
void add(pNode head); //录入职工
private:
int num; //用来计算职工数目
int count; //用来暂时记录当前操作第几个职工
};
pNode MessageList::CreatLinklist(){
pNode head=(pNode)malloc(sizeof(Node));
if(head == NULL)
{
cout<<"内存分配失败!退出程序"<<endl;
exit(ERROR);
}
head->next=NULL;
return head;
}
void MessageList::add(pNode head){
char a;
pNode p;
// head=CreatLinklist();
count=num=read();
if(num == 0)
{
pNode q;
p=head;
while(1)
{
q=(pNode)malloc(sizeof(Node));
if(q == NULL)
{
cout<<"内存分配失败!退出程序"<<endl;
exit(ERROR);
}
cout<<"请输入第"<<num+1<<"个职工信息:"<<endl;
cout<<"职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话"<<endl;
cin>>q->number>>q->name>>q->sex>>q->age>>q->education>>q->money>>q->address>>q->phone;
q->next=NULL;
p->next = q;
p=q;
++num;
count=num;
cout<<"录入成功,请问是否继续录入?(Y/N)"<<endl;
cin>>a;
system("cls");
while((a!='Y')&&(a!='y')&&(a!='N')&&(a!='n'))
{
cout<<"输入错误,请重试:"<<endl;
cin>>a;
}
if((a=='N')||(a=='n'))
break;
}
}
}
就是在cin>>q->number>>q->name>>q->sex>>q->age>>q->education>>q->money>>q->address>>q->phone;这句上出问题了,会出错,请大神们求解啊!
q->number应该是一个字符串,但是会出错,如果改成一个整型它就没问题 展开
typedef struct message{
string number; //职工号
string name; //姓名
string sex; //性别
int age; //年龄
string education; //学历
int money; //工资
string address; //住址
string phone; //电话号码
struct message *next;
}Node,*pNode;
class MessageList{
public:
MessageList()
{
num=0;
count=0;
}
int read(); //读出当前文件里职员的个数
// bool judge(); //判断是否为空
pNode CreatLinklist(); //创建空链表
void add(pNode head); //录入职工
private:
int num; //用来计算职工数目
int count; //用来暂时记录当前操作第几个职工
};
pNode MessageList::CreatLinklist(){
pNode head=(pNode)malloc(sizeof(Node));
if(head == NULL)
{
cout<<"内存分配失败!退出程序"<<endl;
exit(ERROR);
}
head->next=NULL;
return head;
}
void MessageList::add(pNode head){
char a;
pNode p;
// head=CreatLinklist();
count=num=read();
if(num == 0)
{
pNode q;
p=head;
while(1)
{
q=(pNode)malloc(sizeof(Node));
if(q == NULL)
{
cout<<"内存分配失败!退出程序"<<endl;
exit(ERROR);
}
cout<<"请输入第"<<num+1<<"个职工信息:"<<endl;
cout<<"职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话"<<endl;
cin>>q->number>>q->name>>q->sex>>q->age>>q->education>>q->money>>q->address>>q->phone;
q->next=NULL;
p->next = q;
p=q;
++num;
count=num;
cout<<"录入成功,请问是否继续录入?(Y/N)"<<endl;
cin>>a;
system("cls");
while((a!='Y')&&(a!='y')&&(a!='N')&&(a!='n'))
{
cout<<"输入错误,请重试:"<<endl;
cin>>a;
}
if((a=='N')||(a=='n'))
break;
}
}
}
就是在cin>>q->number>>q->name>>q->sex>>q->age>>q->education>>q->money>>q->address>>q->phone;这句上出问题了,会出错,请大神们求解啊!
q->number应该是一个字符串,但是会出错,如果改成一个整型它就没问题 展开
2014-01-11
展开全部
跑了一下,可以正常运行的
============================================================
请输入第1个职工信息:
职工号 姓名 性别 年龄 学历 工资 住址 电话
1
2
3
4
5
6
7
8
录入成功,请问是否继续录入?(Y/N)
Y
请输入第2个职工信息:
职工号 姓名 性别 年龄 学历 工资 住址 电话
3
4
5
6
7
8
9
0
录入成功,请问是否继续录入?(Y/N)
============================================================
请输入第1个职工信息:
职工号 姓名 性别 年龄 学历 工资 住址 电话
1
2
3
4
5
6
7
8
录入成功,请问是否继续录入?(Y/N)
Y
请输入第2个职工信息:
职工号 姓名 性别 年龄 学历 工资 住址 电话
3
4
5
6
7
8
9
0
录入成功,请问是否继续录入?(Y/N)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string 本身的结构也是一个指针.....也是动态分配内存的 你把它改成char型试试......
#include<iostream>
using namespace std;
struct data{
char a[100];
};
int main()
{
struct data *s;
s=(struct data *)malloc(sizeof(struct data));
cin>>(s->a);
cout<<(s->a);
system("pause");
return 0;
}
#include<iostream>
using namespace std;
struct data{
char a[100];
};
int main()
{
struct data *s;
s=(struct data *)malloc(sizeof(struct data));
cin>>(s->a);
cout<<(s->a);
system("pause");
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题应该是在初始化q的时候没有给string类型的变量分配空间,在这种写法下,要对每个string都要处理一下,不然没有空间,cin是出错的。而整型有空间,所以不错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用new,不要使用malloc
new会调用构造函数,而malloc不会
new会调用构造函数,而malloc不会
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询