| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 872 人关注过本帖
标题:为什么会不运行第二个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
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册: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: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:120
专家分:118
注 册:2013-6-29
收藏
得分:0 
第二个scanf ()其实运行了,只是你没有发现。当执行第一个scanf ()时,输入一个整数按下一个空格,记住这里传递了两个值,第一个值是输入的整数传递给了第一个scanf (),第二个值传递给了第二个scanf ().第二个值就是你按下的那个空格。解决的办法有很多,在第二个scanf ()前面加个getchar ();或者像三楼说的那样格式输入符前加个空格;因为加个空格与不加空格的区别在于:不加空格读取任何字符(包括空格与换行),而加了空格之后读取遇到的第一个非空格与换行字符。你犯的错误就是前者。

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

天道酬勤
2013-07-12 19:03
快速回复:为什么会不运行第二个scanf
数据加载中...
 
   



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

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