黑马程序员技术交流社区

标题: 输出函数scanf() [打印本页]

作者: 缘之有缘    时间: 2016-3-28 22:19
标题: 输出函数scanf()
输入的东西(变量)要保存到一个东西(变量)里面
scanf("%d%d",&a,&b);
&:获取变量的地址,这里是通过地址,将变量的数值放到变量里面。
注:当程序拿到输入的数值后,先查看目标变量(接受输入的变量)的地址,然后,将数值放到该地址的变量中。
跟收快递一样,小明买东西,快递查看小明的地址,然后把快递放到小明手上
============
有这样的一段代码:
#include
void main(){
        int age;
        char sex;
        printf("请输入年龄:");
        scanf("%d",&age);
        printf("请输入性别:");
        scanf("%c",&sex);
        printf("==================\n");
        printf("年龄是:%d\n性别是:%c\n我前面应该没有空行!\n",age,sex);
}
你会发现运行到输入性别的时候,给跳过了,这是为什么?
因为之前输入年龄的时候按了回车,回车在缓冲区,导致下次输入性别的时候,把那个回车读了进来。
这时候你运行代码的时候,会发现输出的时候,多了个换行;

如果想解决这个问题,我这里提供一个方法,你在前面加个getchar();就把那个回车过滤掉了。
我在网上看到解决这个问题的方法很多,我就记了个简单的。
这时候代码变成了:
#include
void main(){
        int age;
        char sex;
        printf("请输入年龄:");
        scanf("%d",&age);
        getchar();//等待一下
        printf("请输入性别:");
        scanf("%c",&sex);
        printf("==================\n");
        printf("年龄是:%d\n性别是:%c\n我前面应该没有空行!\n",age,sex);
}
注:getchar(); -->程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).
作者: 堕落天使    时间: 2016-3-29 08:05
感谢分享!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2