哪位大侠帮忙看下简单程序错在哪里
时间:2010-09-07
来源:互联网
#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}linknode;
linknode *create(void)
{
datatype ch;
linknode *head;
linknode *p;
head=NULL;
scanf("%d",&ch);
while(ch!='\n')
{
p=(linknode *)malloc(sizeof(linknode));
p->data=ch;
p->next=head;
head=p;
scanf("%d",&ch);
}
return head;
}
void main()
{
linknode *cc=create();
do
{
printf("%d\n",cc->data);
cc=cc->next;
}while(cc!=NULL);
printf("\n");
}
貌似跳不出去循环,一直要输入,不明白问什么,
#include <stdlib.h>
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}linknode;
linknode *create(void)
{
datatype ch;
linknode *head;
linknode *p;
head=NULL;
scanf("%d",&ch);
while(ch!='\n')
{
p=(linknode *)malloc(sizeof(linknode));
p->data=ch;
p->next=head;
head=p;
scanf("%d",&ch);
}
return head;
}
void main()
{
linknode *cc=create();
do
{
printf("%d\n",cc->data);
cc=cc->next;
}while(cc!=NULL);
printf("\n");
}
貌似跳不出去循环,一直要输入,不明白问什么,
作者: mafuli007 发布时间: 2010-09-07
输入10不行吗。。
作者: pandaiam 发布时间: 2010-09-07
scanf("%d", &ch)永远取不到‘\n',循环自然永远也跳不出来了
作者: liwangli1983 发布时间: 2010-09-07
scanf("%d",&ch);
后面再加一个scanf,需要再定义一个变量,后面的scanf用来接收前面的scanf丢掉的\n
后面再加一个scanf,需要再定义一个变量,后面的scanf用来接收前面的scanf丢掉的\n
作者: ilwmin 发布时间: 2010-09-07
本帖最后由 liwangli1983 于 2010-09-07 18:49 编辑
scanf其实是个挺复杂挺危险的函数,没弄明白它的工作原理前要慎用……
另外用判断是否为'\n'的办法判断结束好像也不太合适,因为标准输入是行缓冲的,输入完一个数要回车确认才能把数据刷到请求的进程中,所以每次输入都必然会跟随一个'\n',所以就算解决了扫描'\n'的问题,那么按现有的程序只输入一次循环就结束了
scanf其实是个挺复杂挺危险的函数,没弄明白它的工作原理前要慎用……
另外用判断是否为'\n'的办法判断结束好像也不太合适,因为标准输入是行缓冲的,输入完一个数要回车确认才能把数据刷到请求的进程中,所以每次输入都必然会跟随一个'\n',所以就算解决了扫描'\n'的问题,那么按现有的程序只输入一次循环就结束了
作者: liwangli1983 发布时间: 2010-09-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28