搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 为什么会不运行第二个scanf
标题:
为什么会不运行第二个scanf
只看楼主
a250621226
等 级:
论坛游民
帖 子:17
专家分:13
注 册:2007-3-3
结帖率:
66.67%
楼主
问题点数:0 回复次数:5
为什么会不运行第二个scanf
#include <stdio.h>
#include <stdlib.h>
int main ()
{long int a=250621,s;
char d;
do
{
scanf ("%d",&s);
if (s==a)
printf("成功进入");
else
printf("错误\n");
scanf ("%c",&d);//这句一直不运行
}
while (d=='y'||d=='Y');
system ("pause");
}
搜索更多相关主题的帖子:
include
system
2013-07-10 10:18
love云彩
来 自:青藏高原
等 级:
贵宾
威 望:
53
帖 子:3663
专家分:11416
注 册:2012-11-17
第
2
楼
得分:0
把第二个scanf放在第一个scanf的后面试试
思考赐予新生,时间在于定义
2013-07-10 11:13
rjsp
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
3
楼
得分:0
scanf ("%d",&s); 改为 scanf ("%ld",&s);
scanf ("%c",&d); 改为 scanf (" %c",&d);
2013-07-10 12:02
qq525273446
等 级:
论坛游侠
威 望:
1
帖 子:54
专家分:161
注 册:2009-11-18
第
4
楼
得分:0
fflush(stdin);//刷下缓冲区
scanf ("%c",&d);//这句一直不运行
其实每次用scanf()函数之前 应该用while顺环清空缓冲区
while(0==scanf("%c",&d)
{
scanf("%*[^\n]");
scanf("%*c");
}
找工作中……
2013-07-10 23:45
gg0013
等 级:
论坛游民
帖 子:25
专家分:16
注 册:2012-11-26
第
5
楼
得分:0
围观下.
2013-07-11 00:49
cheetah
等 级:
论坛游民
威 望:
2
帖 子:110
专家分:92
注 册:2013-6-29
第
6
楼
得分:0
第二个scanf ()其实运行了,只是你没有发现。当执行第一个scanf ()时,输入一个整数按下一个空格,记住这里传递了两个值,第一个值是输入的整数传递给了第一个scanf (),第二个值传递给了第二个scanf ().第二个值就是你按下的那个空格。解决的办法有很多,在第二个scanf ()前面加个getchar ();或者像三楼说的那样格式输入符前加个空格;因为加个空格与不加空格的区别在于:不加空格读取任何字符(包括空格与换行),而加了空格之后读取遇到的第一个非空格与换行字符。你犯的错误就是前者。
[
本帖最后由 cheetah 于 2013-7-12 19:04 编辑
]
天道酬勤
2013-07-12 19:03
6
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-417034-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.174551 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved