返回信息流#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node
{
int data;
node * next;
}node , * List;
void create(int n)
{
char c;
List s,p,h;
h=p=(List)malloc(sizeof(node));
h->next=NULL;
printf("请输入第1个数据:");
scanf_s("%c",&c);
p->data='c';
for(int i=2;i<=n;i++)
{
s=(List)malloc(sizeof(node));
printf("请输入第%d个数据:",i);
scanf_s("%c",&c);
s->data='c';
p->next=s;
p=s;
}
printf("链表创建成功!");
}
void main()
{
int n;
printf("请你输入链表的个数:");
scanf_s("%d",&n);
create(n);
}
不知道代码有问题吗?每次输入链表个数后都会同时跳出“请输入第一个数据”“请输入第二个数据”,不知道怎么回事,求大神们解答。谢谢。
这是一条镜像帖。来源:北邮人论坛 / cpp / #73475同步于 2013/8/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
创建链表出的问题,求解答
zhuyang
2013/8/28镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
scanf在输入多个%c的时候需要及时清空缓冲区,可以在scanf后fflush(stdin);
不过看你的程序目测输入应该是int型啊?应该是下边这样吧?%d输入一般不需要每次马上清理缓冲区~
change:
char c;
// ...
scanf_s("%c",&c);
to:
int d;
// ...
scanf_s("%d",&d);
【 在 zhuyang 的大作中提到: 】
: #include<stdio.h>
: #include<stdlib.h>
: #include<malloc.h>
: ...................
这是因为你输入数据的类型是%c所以当你第一次输入数据n按回车的时候系统默认将你的回车作为你的%c的输入了。解决方法:再用一个scanf将你的回车做掉就可以了。