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应该是一个字符串,但是会出错,如果改成一个整型它就没问题
展开
 我来答
匿名用户
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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流月星寒
2014-01-11 · TA获得超过638个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:577万
展开全部
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
psxf91
2014-01-11 · TA获得超过428个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:486万
展开全部
问题应该是在初始化q的时候没有给string类型的变量分配空间,在这种写法下,要对每个string都要处理一下,不然没有空间,cin是出错的。而整型有空间,所以不错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Gaussine
2014-01-11 · TA获得超过272个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:149万
展开全部
使用new,不要使用malloc
new会调用构造函数,而malloc不会
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式