C Valgrind show";valgrind:地址0x40152b7处的未识别指令-非法指令(内核转储)“;,
我的代码是关于在链表中有序插入的&我不明白歧义在哪里但当我运行程序时,它似乎工作正常。是编译器的错还是我的错?我是新来的,所以请帮帮我C Valgrind show";valgrind:地址0x40152b7处的未识别指令-非法指令(内核转储)“;,,c,linked-list,valgrind,C,Linked List,Valgrind,我的代码是关于在链表中有序插入的&我不明白歧义在哪里但当我运行程序时,它似乎工作正常。是编译器的错还是我的错?我是新来的,所以请帮帮我 #include<stdio.h> #include<stdlib.h> struct node{ int i; struct node *link; }; int main() { struct node *head,*p,*temp,*q; int data; char c; printf("Do you want to enter
#include<stdio.h>
#include<stdlib.h>
struct node{
int i;
struct node *link;
};
int main()
{
struct node *head,*p,*temp,*q;
int data;
char c;
printf("Do you want to enter data? Y/N");
scanf(" %c",&c);
fflush(stdin);
if((c=='Y')||(c=='y'))
{
head=(struct node*)malloc(sizeof(struct node));
printf("Enter the data: ");
scanf(" %d",&data);
head->i=data;
head->link=NULL;
}
printf("Do you wan to enter more data? Y/N");
scanf(" %c",&c);
fflush(stdin);
q=head;
while((c=='y')||(c=='Y'))
{
printf("Enter the data: ");
scanf(" %d",&data);
temp=(struct node *)malloc(sizeof(struct node));
temp->i=data;
temp->link=NULL;
if(q->i>=temp->i)
{
temp->link=q;
head=temp;
}
else
{
while((q->link!=NULL)&&(temp->i>q->link->i))
{
q=q->link;
}
temp->link=q->link;
q->link=temp;
}
q=head;
fflush(stdin);
printf("Do you want to enter more data? Y/N");
scanf(" %c",&c);
}
p=head;
while(p!=NULL)
{
printf("%d ",p->i);
p=p->link;
}
return 0;
}
#包括
#包括
结构节点{
int i;
结构节点*链接;
};
int main()
{
结构节点*head、*p、*temp、*q;
int数据;
字符c;
printf(“是否要输入数据?是/否”);
scanf(“%c”、&c);
fflush(stdin);
if((c=='Y')| |(c=='Y'))
{
head=(结构节点*)malloc(sizeof(结构节点));
printf(“输入数据:”);
scanf(“%d”和数据);
head->i=数据;
head->link=NULL;
}
printf(“您想输入更多数据吗?是/否”);
scanf(“%c”、&c);
fflush(stdin);
q=头;
while((c=='y')| |(c=='y'))
{
printf(“输入数据:”);
scanf(“%d”和数据);
temp=(结构节点*)malloc(sizeof(结构节点));
温度->i=数据;
temp->link=NULL;
如果(q->i>=temp->i)
{
温度->链接=q;
压头=温度;
}
其他的
{
而((q->link!=NULL)&&(temp->i>q->link->i))
{
q=q->link;
}
温度->链接=q->链接;
q->link=temp;
}
q=头;
fflush(stdin);
printf(“是否要输入更多数据?是/否”);
scanf(“%c”、&c);
}
p=水头;
while(p!=NULL)
{
printf(“%d”,p->i);
p=p->link;
}
返回0;
}
欢迎使用堆栈溢出!标准警告:fflush(标准输入)代码>是未定义的行为。@Sourav它是如何未定义的?这感觉更像是一个valgrind bug,而不是一个问题。在你的代码中。您使用的是哪个版本的valgrind和gcc?@Roberto它是valgrind-3.9.0和gcc(gcc)4.8.3 20140911(Red Hat 4.8.3-9)欢迎使用堆栈溢出!标准警告:fflush(标准输入)代码>是未定义的行为。@Sourav它是如何未定义的?这感觉更像是一个valgrind bug,而不是一个问题。在你的代码中。您使用的是哪个版本的valgrind和gcc?@Roberto它是valgrind-3.9.0和gcc(gcc)4.8.3 20140911(Red Hat 4.8.3-9)