scanf函数学习

直接上代码,因为我的所有的学习过程都在注释里面呢。

#include
   
   
    
    

/**
 * 这篇主要学习的是scanf函数
 * 经过查阅资料才会发现
 * scanf函数里面还是有很多东西的
 *
 * @brief main
 * @return
 */
int main(void)
{
    int a;      //int类型
    char b;     //char类型
    float c;    //float类型
    double d;   //double类型
    char* str;  //字符数组

    scanf("%d",&a); //scanf接收的是地址,&a是获取a的地址
    printf("%d\n",a);

    /**
     * 由于每按下一个ENTER键,键盘向缓冲区发送一个'\r'和一个
     * '\n',其中'\r'暂且理解为被忽略了
     * 如果不清空缓冲区的内容的话,则缓冲区中还会存在一个'\n'
     * 就会被scanf接收
     * @brief getchar
     */
    getchar();  //目的是将输入缓冲区中的内容清空

    /**
     * 先测试一下,没有getchar的效果
     * 测试代码
     * int a,b;
     * scanf("%d",&a);
     * printf("%d\n",a);
     * scanf("%c",&b);
     * if(b == '\n'){
     *   printf("next line");  //该行被执行了
     *  }else{
     *   printf("no");
     *  }
     */

    /**
     * 由上面的测试可以得出结论,在使用
     * scanf函数的时候,一定要多加小心
     * 很容易出现问题的
     */

    scanf("%c",&b);
    printf("%c\n",b);

    getchar(); //不要忘记奥

    scanf("%f",&c);
    printf("%f\n",c);

    getchar();

    scanf("%lf",&d);
    printf("%lf\n",d);

    getchar();

    scanf("%s",str);  //由于str本身自己就是指针了,所以就不用&
    printf("%s\n",str);

    getchar();

    //有关于scanf的一些用法
    //第一个格式要一致
    int m,n;
    scanf("%d%d",&m,&n);//在输入过程中,只能是"1 2"
    printf("m = %d,n = %d\n",m,n);

    getchar();

    scanf("%d,%d",&m,&n);//在输入过程中,只能是"1,2"
    printf("m = %d,n = %d\n",m,n);

    //getchar();
    //scanf("%20s",str);//最多获得20个字符,如果少,在输入结尾处返回
                        //如果多,最多获取20个字符
    //printf("%s\n",str);

    //getchar();
    //scanf("%[A-Z]",str);  //仅仅获取大写字母
    //printf("%s\n",str);

    getchar();
    scanf("%[^\n]",str);  //获取除了换行符之外的所有字符,这样的话就可以接受空格了
    printf("%s\n",str);

    return 0;
}

   
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天堂1223

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值