注册 登录
编程论坛 C++教室

程序不能退出,希望各位找一下原因

kisscjy 发布于 2007-04-10 11:02, 562 次点击

本人是一个菜菜鸟~~~
希望大家多多包涵~~~
这是我编的程序

#include<iostream.h>


struct emp //定义职工结构
{char name[8];
long id;
char sex;
int year;
emp*next;
};

void main()
{
emp *p,*s,*head;
head=NULL;
p=new emp;
cout<<"请输入职工的姓名(以0结束),ID,性别(M代表男性,F代表女性),年龄!"<<endl;
cin>>p->name>>p->id>>p->sex>>p->year;
while(1)
{if(head==NULL) head=p;
else s->next=p;
s=p;
p=new emp;
cin>>p->name>>p->id>>p->sex>>p->year;
if(p->name==0) break;
}
s->next=NULL;
delete p;

cout<<"谢谢使用,再见!"<<endl;

}

我想当名字输入0的时候退出循环,但是我输入0循环还在继续~~~
编译没有错误...

7 回复
#2
aipb20072007-04-10 12:10
name 是个char数组,那name = 0只是表示name是个NULL指针!
#3
I喜欢c2007-04-10 13:44
if(p->name=='0') break;

就ok了...
#4
kisscjy2007-04-10 16:10

谢谢大家,问题己解决~~~
但是我还有一些问题:

3楼的高手:我按你改的话就会出现编译错误:

error C2440: '=' : cannot convert from 'const char' to 'char [8]'

但是改成 if(p->name[0]=='0') break

就可以运行成功~~~

我想问一下为什么3楼的改法就不行呢????

谢谢大家的指点~~~

#5
kisscjy2007-04-10 16:12
说错了,编译错误为

error C2446: '==' : no conversion from 'int' to 'char *'

error C2040: '==' : 'char [8]' differs in levels of indirection from 'int'

#6
I喜欢c2007-04-10 16:38
哦!

是我没注意了....
#7
I喜欢c2007-04-10 16:50

你输入的0 是存在name[0]中...

#8
kisscjy2007-04-10 18:46

谢谢3楼的解释~~
THANK

1