程序不听话!
我用来判断结束的NULL不管用!请帮助!
程序如下:
#include <stdio.h>
#define NULL 0
struct datalink {
char data[6];
struct datalink *next;
};
main()
{
struct datalink *head,*comphfcode();
int total,*intp;
total=0;
intp=&total;
head=comphfcode(intp);
listdata(head,intp);
}
struct datalink *comphfcode(intp)
int *intp;
{
char *endcode="#";
struct datalink *p1,*p2,*p3;
p1=(struct datalink *)malloc(sizeof(sizeof(struct datalink)));
strcpy(p1->data,"");
p1->next=NULL;
p3=p1;
while (1) {
printf("请输入前缀码(不超过四位,以#号结束输入):");
p2=(struct datalink *)malloc(sizeof(sizeof(struct datalink)));
scanf("%s",p2->data);
if (strcmp(endcode,p2->data)==0) break;
p2->next=NULL;
p3->next=p2;
p3=p2;
*intp=*intp+1;
}
if (p3->next==NULL) printf("this is true");
return (p1);
}
listdata(head,intp)
struct datalink *head;
int *intp;
{
int i;
struct datalink *p1;
p1=head;
p1=p1->next;
/* for (i=0;i<*intp;i++)
{
printf("%s\n",p1->data);
p1=p1->next;
}*/
while (p1->next != NULL) {
printf("%s\n",p1->data);
p1=p1->next;
}
}
问题点数:50、回复次数:1Top
1 楼squiffy(歪歪)回复于 2000-12-15 11:05:00 得分 50
程序好多地方不好,
p2=(struct datalink *)malloc(sizeof(sizeof(struct datalink)));
scanf("%s",p2->data);,
为什么用sizeof(sizeof(struct datalink))?,
应该是p2 = malloc(sizeof(struct datalink);我觉得你的malloc用法很奇怪,我从来没有见过用sizeof(sizeof(struct datalink))?
就是二维的指针,也应该是sizeof(struct XXX *);
main里面最开始malloc也不对,我觉得这个程序得非法操作才正常。
strcpy(p1->data,"");
p1->next=NULL;
一般都使用:memset(p1,0,sizeof(struct datalink) );
Top




