当前位置: 技术问答>linux和unix
segmentation fault的问题,急!
来源: 互联网 发布时间:2016-10-16
本文导语: 我用VI写个单链表,然后用gcc编译: #include #include #define OK 1 typedef struct Node { int num; char name[10]; struct Node *next; }Stud,*studp; Stud *CreatStudLink(studp h) { if((h=(studp)malloc(sizeof(Stud)))==NULL) { ...
我用VI写个单链表,然后用gcc编译:
#include
#include
#define OK 1
typedef struct Node
{
int num;
char name[10];
struct Node *next;
}Stud,*studp;
Stud *CreatStudLink(studp h)
{
if((h=(studp)malloc(sizeof(Stud)))==NULL)
{
printf("Error!n");
exit(0);
}
h->next=NULL;
return h;
}
Stud *InsertStudData(studp h)
{
int n,i;
studp p,s;
p=h;
printf("input the amount of studentn");
scanf("%d",&n);
for(i=0;inum);
printf("input namen");
scanf("%s",p->name);
p->next=s;
p=s;
}
return h;
}
Stud *SearchStudData(studp h)
{
int n;
studp p;
p=h;
printf("input a student's number and output the datan");
scanf("%d",&n);
while(n!=p->num)
{
p=p->next;
}
printf("num:%dt",p->num);
printf("num:%sn",p->name);
return h;
}
void main()
{
studp stu;
CreatStudLink(stu);
InsertStudData(stu);
SearchStudData(stu);
free(stu);
}
屏幕按我的要求显示了"input num"
我输入了一个字之后提示我 segmentation fault。什么意思?
#include
#include
#define OK 1
typedef struct Node
{
int num;
char name[10];
struct Node *next;
}Stud,*studp;
Stud *CreatStudLink(studp h)
{
if((h=(studp)malloc(sizeof(Stud)))==NULL)
{
printf("Error!n");
exit(0);
}
h->next=NULL;
return h;
}
Stud *InsertStudData(studp h)
{
int n,i;
studp p,s;
p=h;
printf("input the amount of studentn");
scanf("%d",&n);
for(i=0;inum);
printf("input namen");
scanf("%s",p->name);
p->next=s;
p=s;
}
return h;
}
Stud *SearchStudData(studp h)
{
int n;
studp p;
p=h;
printf("input a student's number and output the datan");
scanf("%d",&n);
while(n!=p->num)
{
p=p->next;
}
printf("num:%dt",p->num);
printf("num:%sn",p->name);
return h;
}
void main()
{
studp stu;
CreatStudLink(stu);
InsertStudData(stu);
SearchStudData(stu);
free(stu);
}
屏幕按我的要求显示了"input num"
我输入了一个字之后提示我 segmentation fault。什么意思?
|
这样改了以后,可以解决你说的段错误问题。
当然,运行到后面还有其他段错误问题。而且,这样改只是解决这个错误,实际上,你定义的下面函数也有问题
应该修改为
Stud *CreatStudLink()
{
studp h
if((h=(studp)malloc(sizeof(Stud)))==NULL)
{
printf("Error!n");
exit(0);
}
h->next=NULL;
return h;
}
我看了下你这个程序,一些基础概念理解不到位哦。(我也不是高手)