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)