| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1182 人关注过本帖
标题:一事不懂
只看楼主 加入收藏
private
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-5-1
收藏
得分:0 

scanf() 在这里用有点不恰当,scanf()在接受时,是不接受 回车 和 空格 的.
如果你用它在循环时 第二次不会接受 回车 或 空格,这点要注意.

但是getchar()就不是了,只要是你按键盘就会被接受,但是是先存在缓冲区里.
你循环一次就在缓冲区里拿一个.
所以要有清缓冲区的语句fflush(stdin);


2006-05-01 14:52
飞跃无限
Rank: 1
等 级:新手上路
威 望:1
帖 子:180
专家分:0
注 册:2006-4-16
收藏
得分:0 
以下是引用soft_wind在2006-4-21 18:52:00的发言:

原因是你那个scanf("%c",&i)必须在输入后,还得按回车键,就在程序第二次循环中默认你又输入了回车,显然不等于'y',所以就退出来了.

怎么不懂啊
你能讲详细的吗

2006-05-01 14:55
private
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-5-1
收藏
得分:0 

我还要说一下
#include<stdio.h>
int main()
{
char i;
do{
printf(" hello the word\n");
fflush(stdin);// 这一定要有这句,清掉 键盘
i=getchar();

}while(i == 'y');
}
//不要有return在主函数 里

///这样写是没有任何意义的因为这样写 只有你每次都要输入'y'才会循环
///像这样yyyyyyyyyyyyyyy回车


2006-05-01 14:58
private
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-5-1
收藏
得分:0 
我还要说一下 ,上面那样写 没有什么意义
因为 你只有输入'y' 才能维持循环
像输入yyyyyyyyyy回车.....

2006-05-01 15:03
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用飞跃无限在2006-5-1 14:55:00的发言:

怎么不懂啊
你能讲详细的吗

就是你在输入的时候,输入字母后回车,这个回车仍被记录下来当成你第二次输入的字母。
解决的方法用getche来是最简单的了,一输入它就读进去;

10楼的方法让我又学了点新东西,在次说声感谢喽!


对不礼貌的女生收钱......
2006-05-01 15:12
private
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-5-1
收藏
得分:0 

真是晕呀 怎么都这样写 呀??????????
要是我写就这样:::
#include<stdio.h>
void main()
{
char i;
do{
printf(" hello the word\n");
fflush(stdin);// 这一定要有这句,清掉 键盘
i=getchar();

}while(i != 'n'||i != 'N');
}


2006-05-01 15:46
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

楼上的几位能不能说明白了,因为输入字符被缓冲,只有按回车才发送给计算机,i只接受了字符,回车还在缓冲中呆着呢,你要把缓冲中的回车清除掉就可以了


#include <stdio.h>
#include <conio.h>

int main()
{
char i;
do
{
fflush(stdin);
printf("hello the word\n");
scanf("%c", &i);
}while(i == 'y');

getch();
return 0;
}

[此贴子已经被作者于2006-5-1 17:30:50编辑过]


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-01 17:30
ghdong88
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-1
收藏
得分:0 
大家讨论的这么多,看的出楼主的程序的do语句中
只要加入’fflush(stdin);这条语句一切都解决了!
原因也如大家讨论的,就是在输入的时候,输入字母后回车,
这个回车仍被记录下来当成你第二次输入的字母。接着就跳出了主程序!

2006-05-01 18:23
ninanwine
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-5-1
收藏
得分:0 

用%C不行,似乎用%S可以,我以前遇到着个问题过!


用0-1统治世界!
2006-05-02 01:23
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
回复:(ninanwine)用%C不行,似乎用%S可以,我以前遇...
以下是引用ninanwine在2006-5-2 1:23:00的发言:

用%C不行,似乎用%S可以,我以前遇到着个问题过!

不要误导呀,您的话应为

用格式串"%c"不行,似乎用格式串"%s"可以,我以前遇到着个问题过!

以上c和s均必须是小写!!!


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-02 05:31
快速回复:一事不懂
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026983 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved