关于c语言中scans函数使用的学习笔记

下面是以代码形式写的笔记,拷贝到IDE中即可查看并运行示例:

#include <stdio.h>

int main(void)

{

    //scanf函数第一个参数为字符串,其中有占位符,后面的变量与前面的占位符一一对应

    //如果scanf将转换后的二进制存储到基本变量当中,请在变量名前加&。

    //如果scanf将字符串存储到字符数组中,字符数组名不用加&。

    //输入时需要按照字符串中的排列方式

    //后面用于接收的变量也需要与前面匹配,不皮面

    //下为示例代码:

    char c;

    short s;

    int n;

    long l;

    float f;

    double df;

    scanf("%hhd %hd %d %ld %f %lf", &c, &s, &n, &l, &f, &df);

    printf("%d %d %d %d %f %f\n", c, s, n, l, f, df);

    //输入1 2 3 4 5.6 7.8

    //输出1 2 3 4 5.600000 7.800000

    //

    //常见bug

    //长度正确但类型错误

    //输入字符串数值大于转换类型取值范围

    // 变量放不下转换结果可以接收但是可能丢失数据,如:

    short q;

    scanf("%hd", &q);

    printf("%d\n", q);

    //输入21478247824723

    //输出-685

    //总结:

    //输入字符串的数值与转换规范和接收转换结果的变量类型必须匹配才能得到正确结果

    //

    //            字符和字符串

    //输入字符的常规方法,如下面的示例

    char cha;

    scanf("\n%c", &cha);

    printf("%d %c\n", cha, cha);

    //输入A

    //输出 65 A

    //注意,这个地方如果scanf不加\n将出现非常诡异的bug

    //详见我的博客http://t.csdnimg.cn/xx90w

    //对于字符串而言,需要输入到字符数组当中

    char str[10];

    scanf("%s", str);

    printf("%s", str);

    //输入hello

    //输出hello

    //

    //注意:printf的参数由于自动类型提升,%d,%f在比int/double低级的均可使用

    //但scanf是直接把转换结果送到接收变量中,必须严格使用转换规范

    

    return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值