gpt4 book ai didi

c - 为什么这段链表有序插入代码在 GCC CEntos 中不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:53 25 4
gpt4 key购买 nike

在 Dev-C++(TDM-GCC 4.8.1 64 位版本)上同样适用,centos 上的 gcc 版本是 (gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16))。 请告诉我,如果我的编码逻辑有任何错误或其他原因

`#include<stdio.h>
#include<stdlib.h>
struct node
{
int i;
struct node *next;
};
void main()
{
struct node *head,*temp,*p;
int d;
char ch;
printf("Do you want to enter data? Y/N");
scanf("%c",&ch);
fflush(stdin);
if((ch=='y')||(ch=='Y'))
{
printf("Enter your data: ");
scanf("%d",&d);
fflush(stdin);
head=(struct node *)malloc(sizeof(struct node));
head->i=d;
head->next=NULL;
}
p=head;
printf("Do you want to enter more data? Y/N");
scanf("%c",&ch);
fflush(stdin);
while((ch=='y')||(ch=='Y'))
{
temp=(struct node *)malloc(sizeof(struct node));
printf("Enter your data: ");
scanf("%d",&d);
fflush(stdin);
temp->i=d;
temp->next=NULL;
if(p->i>=temp->i)
{
temp->next=head;
head=temp;
}
else
{
while((p->next!=NULL)&&(p->next->i<temp->i))
{
p=p->next;
}
temp->next=p->next;
p->next=temp;
}
printf("Do you want to enter more data? Y/N");
scanf("%c",&ch);
fflush(stdin);
p=head;
}
while(p!=NULL)
{
printf("%d ",p->i);
p=p->next;
}
}`

最佳答案

首先,你不能 fflush(stdin); 所以删除它(fflush 只为输出流定义)。

其次,标准输入缓冲区包含用户在输入“Y”、“N”或数字后键入的换行符。您可以通过将 scanf 调用更改为在 %c 或 %d 之前有一个前导空格来消除此空格,例如:

scanf(" %c",&ch);
...
scanf(" %d",&d);

这将解决我在您的代码中看到的直接问题。

关于c - 为什么这段链表有序插入代码在 GCC CEntos 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30080861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com