标题:为什么不执行scanf("%c",&c);这一句,头大了
只看楼主
sean0034
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-1-10
结帖率:50%
已结贴  问题点数:20 回复次数:3 
为什么不执行scanf("%c",&c);这一句,头大了
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int a,b;
    char c;
    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%c",&c);
    printf("%d\n",a);
    printf("%d\n",b);
    printf("%c",c);
    return 0;
}

[此贴子已经被作者于2022-1-10 20:57编辑过]

搜索更多相关主题的帖子: 执行 int include scanf printf 
2022-01-10 18:30
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
这样看看就清楚
printf("%d",c);
2022-01-11 09:06
sean0034
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2022-1-10
得分:0 
谢谢,又学了一招!
2022-01-11 12:08
邹生笑谈
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2020-12-5
得分:10 
你是不是用回车作为截止条件。scanf它把回车当作一个字符,给了c。并不是不执行。你看看输出是不是直接换行两次。
你输入数字后直接输入你想要的字符,再按回车就行了。
我把代码调试了一下,代码是没有问题的。

涉及到缓冲区的概念,具体的我没有深入了解。但使用sancf要上网查查其注意事项。
我在网上找了一个

关于scanf()函数我们要知道以下几点:
1、用户输入的字符,会以ASCII码形式存储在键盘缓冲区;
2、每调用一次scanf函数,就从键盘缓冲区读走一个字符,相当于清除缓冲区;
3、若用户一次输入n个字符,则前n次调用scanf函数都不需要用户再次输入,直到把缓冲区的数据全部读取(清除)干净;
4、调用scanf()函数时,用户最后输入的回车也会储存在键盘缓冲区;

————————————————
原文链接:https://blog.
2022-01-11 20:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508119-1-1.html




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

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