程序怎么调都调不出来,显示错误是C2228,求高手解答,求详细解决方案,谢谢

int add(PLINK p)

{

PLINK q=(PLINK)malloc(sizeof(struct LINK));

if(NULL==q)

{

printf("录入失败提示:内存不足!\n");

return -1;

}

printf("请输入职工号(数字):");

scanf("%d",&q->w.num);

PLINK h=p->next;

while(h)

{

if(h->w.num==q->w.num)

{

free(q);

printf("录入失败提示:此职工号已经存在!\n");

return -1;

}

h=h->next;

}

printf("请输入职工姓名:");

scanf("%s",&q->w.name);

printf("请输入职工性别:");

scanf("%s",&q->w.sex);

printf("请输入职工年龄:");

scanf("%d",&q->w.age);

printf("请输入职工工龄:");

scanf("%d",&q->w.data);

printf("请输入职工学历:");

scanf("%s",&q->w.edu);

printf("请输入职工职务:");

scanf("%s",&q->w.job);

printf("请输入职工住址:");

scanf("%s",&q->w.adr);

printf("请输入职工电话:");

scanf("%s",&q->w.phone);

q->next=p->next;

p->next=q;

printf("SUCCESS!\n");

return -1;

}

int add(PLINK p) {
PLINK q = (PLINK)malloc(sizeof(struct LINK));
if(NULL == q) {
printf("录入失败提示:内存不足!\n");
return 0; // 用0代表失败更合适,可以作为逻辑“假”使用
}
printf("请输入职工号(数字):");
scanf("%d",&q->w.num);
PLINK h = p->next;
while(h) {
if(h->w.num == q->w.num) {
free(q);
printf("录入失败提示:此职工号已经存在!\n");
return 0;
}
h = h->next;
}
printf("请输入职工姓名:");
scanf("%s",q->w.name);     // 对于格式%s,读入参数不需要&,下同
printf("请输入职工性别:");
scanf("%s",q->w.sex);
printf("请输入职工年龄:");
scanf("%d",&q->w.age);
printf("请输入职工工龄:");
scanf("%d",&q->w.data);
printf("请输入职工学历:");
scanf("%s",q->w.edu);
printf("请输入职工职务:");
scanf("%s",q->w.job);
printf("请输入职工住址:");
scanf("%s",q->w.adr);
printf("请输入职工电话:");
scanf("%s",q->w.phone);
q->next = p->next;
p->next = q;
printf("SUCCESS!\n");
return 1; // 1表示成功,可以作为逻辑“真”使用
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-11
如果我没看错,楼主是不是差了去定义一个h,函数里没有传过来一个参数是h ,函数里也没有定义一个h 啊。那怎么用?
不好意思,看错了……
第2个回答  2013-07-11
倒数第2行的return -1;不对吧,应该是return 0;追问

不是那的问题,系统提示我是C2228错误
c:\documents and
settings\administrator\edgt.cpp(59) : error C2228: left of '.num' must have
class/struct/union type

追答

PLINK及其结构LINK定义没看到。

第3个回答  2013-07-11
你得把w的类型定义放出来看看才能知道问题在哪
相似回答