注册 登录
编程论坛 C语言论坛

为什么不执行scanf("%c",&c);这一句,头大了

sean0034 发布于 2022-01-10 18:30, 1778 次点击
#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编辑过]

3 回复
#2
吹水佬2022-01-11 09:06
这样看看就清楚
printf("%d",c);
#3
sean00342022-01-11 12:08
谢谢,又学了一招!
#4
邹生笑谈2022-01-11 20:56
你是不是用回车作为截止条件。scanf它把回车当作一个字符,给了c。并不是不执行。你看看输出是不是直接换行两次。
你输入数字后直接输入你想要的字符,再按回车就行了。
我把代码调试了一下,代码是没有问题的。

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

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

————————————————
原文链接:https://blog.
1