读书人

运行出错了啊解决办法

发布时间: 2012-04-11 17:42:33 作者: rapoo

运行出错了啊...

C/C++ code
#include<stdio.h>#include<stdlib.h>#define LEN sizeof(struct Student)struct Student{    long num;    float score;    struct Student *next;};int n;struct Student *creat(){    struct Student *head;    struct Student *p1,*p2;    n=0;    p1=p2=(struct Student *)malloc(LEN);    scanf("%ld,%f",&p1->num,&p1->score);    head=NULL;    while(p1->num!=0)    {n=n+1;    if(n==1)head=p1;    else p2->next=p1;    p2=p1;    p1=(struct Studen *)malloc(LEN);    scanf("%ld,%f",&p1->num,&p1->score);    }    p2->next=NULL;}void print(struct Studen *head){    struct Student *p;    printf("\nNow, These %d records are:\n",n);    p=head;    if(head!=NULL)        do        {printf("%ld %5.1f\n",p->num,p->score);         p=p->next;        }while(p!=NULL);}int main(){struct Student *head; head=creat(); print(head);}

谭浩强的书上例题,链表的.


[解决办法]
C/C++ code
    while(p1->num!=0)    {n=n+1;    if(n==1)head=p1;    else p2->next=p1;    p2=p1;    p1=(struct Student *)malloc(LEN);//这儿错了    scanf("%ld,%f",&p1->num,&p1->score);    }
[解决办法]
C/C++ code
void print(struct Studen *head)//这儿错了
[解决办法]
C/C++ code
    p2->next=NULL;    return head;//struct Student *creat()函数最后要有个返回值
[解决办法]
再好好核对一下,代码是不是抄全了
大概看了下,creat函数的实现有问题,没有return语句,运行肯定会出错的
函数结尾加一句"return head;"试试

现在看看曾经领自己入门c语言的谭浩强的示例代码,一堆的陷阱
建议楼主如果以后还用c开发的话,看一些国外的经典c教材,比如c专家编程等

读书人网 >C语言

热点推荐