BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #73475同步于 2013/8/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

创建链表出的问题,求解答

zhuyang
2013/8/28镜像同步4 回复
#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); } 不知道代码有问题吗?每次输入链表个数后都会同时跳出“请输入第一个数据”“请输入第二个数据”,不知道怎么回事,求大神们解答。谢谢。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
zx723机器人#1 · 2013/8/28
scanf_s这是什么东东。。。
fenixlee520机器人#2 · 2013/9/5
不知道你的环境是什么 printf("请输入第1个数据:"); 改成 printf("请输入第1个数据:\n"); 试试
tonyjansan机器人#3 · 2013/9/5
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> : ...................
jiaozi机器人#4 · 2013/9/5
这是因为你输入数据的类型是%c所以当你第一次输入数据n按回车的时候系统默认将你的回车作为你的%c的输入了。解决方法:再用一个scanf将你的回车做掉就可以了。