运行出错了啊...

michael_leslie_yue 2012-03-31 03:07:37

#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);
}


谭浩强的书上例题,链表的.
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
michael_leslie_yue 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

再好好核对一下,代码是不是抄全了
大概看了下,creat函数的实现有问题,没有return语句,运行肯定会出错的
函数结尾加一句"return head;"试试

现在看看曾经领自己入门c语言的谭浩强的示例代码,一堆的陷阱
建议楼主如果以后还用c开发的话,看一些国外的经典c教材,比如c专家编程等
[/Quote]
对对对!! 就是缺少了return 哈哈。眼睛真厉害。
还有谢谢楼上的达人了。
半盒阿尔卑斯 2012-03-31
  • 打赏
  • 举报
回复
再好好核对一下,代码是不是抄全了
大概看了下,creat函数的实现有问题,没有return语句,运行肯定会出错的
函数结尾加一句"return head;"试试

现在看看曾经领自己入门c语言的谭浩强的示例代码,一堆的陷阱
建议楼主如果以后还用c开发的话,看一些国外的经典c教材,比如c专家编程等
面包大师 2012-03-31
  • 打赏
  • 举报
回复
	p2->next=NULL;
return head;//struct Student *creat()函数最后要有个返回值
面包大师 2012-03-31
  • 打赏
  • 举报
回复
void print(struct Studen *head)//这儿错了
面包大师 2012-03-31
  • 打赏
  • 举报
回复
	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);
}
michael_leslie_yue 2012-03-31
  • 打赏
  • 举报
回复
VC++ 6.0上面运行的。
michael_leslie_yue 2012-03-31
  • 打赏
  • 举报
回复
哎哟 图没法读粗来..
就是能编译能运行, 但是运行出错
弹出个框框 unhandled exception in XXXX.c(NTDLL.DLL)0xC0000005:Access Violation

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧