标题:为什么会不运行第二个scanf
只看楼主
a250621226
Rank: 2
等 级:论坛游民
帖 子: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云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
把第二个scanf放在第一个scanf的后面试试

思考赐予新生,时间在于定义
2013-07-10 11:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
scanf ("%d",&s); 改为 scanf ("%ld",&s);
scanf ("%c",&d); 改为 scanf (" %c",&d);
2013-07-10 12:02
qq525273446
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:54
专家分:161
注 册:2009-11-18
得分:0 
    fflush(stdin);//刷下缓冲区
    scanf ("%c",&d);//这句一直不运行

其实每次用scanf()函数之前  应该用while顺环清空缓冲区

while(0==scanf("%c",&d)
{
    scanf("%*[^\n]");
    scanf("%*c");
}

找工作中……
2013-07-10 23:45
gg0013
Rank: 2
等 级:论坛游民
帖 子:25
专家分:16
注 册:2012-11-26
得分:0 
围观下.
2013-07-11 00:49
cheetah
Rank: 2
等 级:论坛游民
威 望:2
帖 子:110
专家分:92
注 册:2013-6-29
得分:0 
第二个scanf ()其实运行了,只是你没有发现。当执行第一个scanf ()时,输入一个整数按下一个空格,记住这里传递了两个值,第一个值是输入的整数传递给了第一个scanf (),第二个值传递给了第二个scanf ().第二个值就是你按下的那个空格。解决的办法有很多,在第二个scanf ()前面加个getchar ();或者像三楼说的那样格式输入符前加个空格;因为加个空格与不加空格的区别在于:不加空格读取任何字符(包括空格与换行),而加了空格之后读取遇到的第一个非空格与换行字符。你犯的错误就是前者。

[ 本帖最后由 cheetah 于 2013-7-12 19:04 编辑 ]

天道酬勤
2013-07-12 19:03



参与讨论请移步原网站贴子: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