您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 大家帮帮忙阿这个运行时报错Segmentation fault好像是什么段错误

大家帮帮忙阿这个运行时报错Segmentation fault好像是什么段错误

来源:网络整理     时间:2016/7/28 2:20:40     关键词:

关于网友提出的“ 大家帮帮忙阿这个运行时报错Segmentation fault好像是什么段错误”问题疑问,本网通过在网上对“ 大家帮帮忙阿这个运行时报错Segmentation fault好像是什么段错误”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 大家帮帮忙阿这个运行时报错Segmentation fault好像是什么段错误
描述:

#include
#include
int main(){
struct q
{int data;
 struct q   * next;
};
int length;
printf("请输入链表的数据元素个数:");
scanf("%d",&length);
struct q  *p[length];
int i=0;
for( i=0;i<>
{p[i]=(struct q  *)malloc(sizeof(struct q));
if(i==length-1)p[i]->next=0;
else  if(i!=0)p[i-1]->next=p[i];
printf("请输入第%d个元素",i);
scanf("%d",&p[i]->data);
//if(i==length-1)p[i]->next=0;
}
struct q  *c;
printf("请分别输入要在链表中X位置后插入(从0开始)的X的值和元素的值:");
int x,y;
scanf("%d,%d",&x,&y);
c=(struct q *)malloc(sizeof(struct q));
c->next=p[x+1];
p[x]->next=c;
c->data=y;
int j;
for(j=0;j<=length;j++)
{if(j==x)printf("%d",c->data);
else printf("%d",p[i]->data);}
return 0;}


解决方案1:

哦呵呵谢了那个不小心是写错了 
非常感谢呵呵 
我还有一个问题我这个在LINUX下没有报错但是在WINDOWS下却报错啊
---------------------------------------------------
linux下C编译器对指针越界不报错(版本不同有时候也会报)
windows下的C编译器一般都会报

解决方案2:

for(j=0;j <=length;j++) 
{if(j==x)printf( "%d ",c-> data); 
else   printf( "%d ",p[i]-> data);} 
========
1. 循环变量是j,为什么用p[i]->data? 此时i为length,数组越界了。
2. 用p[j]->data也不对,楼主的意思是按顺序打印链表的data值,是不是可以这样:


for(j = 0; j <= length; j++) 
{
if (j == x)
printf("%d\n", c->data); 
else if (j < x)
printf( "%d\n",p[j]-> data);
else
printf( "%d\n",p[j-1]-> data);
}

以上介绍了“ 大家帮帮忙阿这个运行时报错Segmentation fault好像是什么段错误”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2977103.html

相关图片

相关文章