【C语言】scanf函数的用法

  1. scanf是一个变参函数。(参数的数量和类型不确定)

  2. scanf的第一个参数是需要输入的字符串以及需要被读取的占位符。

  3. scanf的后续参数,是依次被读取并赋值的变量地址。

  4. 占位符的类型和数量需要与后续的参数类型和数量对应。

#include <stdio.h>
int main()
{
    short s;
    int n;
    long l;
    float f;
    double df;
    scanf("s=%hd n=%d l=%ld f=%f df=%lf", &s, &n, &l, &f, &df);
    printf("%d %d %d %f %f\n", s, n, l, f, df);
    return 0;
}

注意,键盘输入的时候,必须要和scanf的第一个参数的字符串对应。也就是说,对于上面的代码输入必须是:s=1 n=2 l=3 f=4.5 df=6.7

 以下几个是错误的示范

1 2 3 4.5 6.7 不一致,错误

s=1n=2l=3f=4.5df=6.7 由于scanf的第一个参数是"s=%hd n=%d l=%ld f=%f df=%lf",带有空格。 输入漏掉了空格,错误。 当然,如果scanf的第一个参数是"s=%hdn=%dl=%ldf=%fdf=%lf",那么这样就是正确的。

s=1,n=2,l=3,f=4.5,df=6.7 错误,由于scanf的第一个参数是用空格分隔的。

scanf的占位符规范和printf类似,但有些不同。请使用的时候,不要混淆了。scanf的占位符组成如下。

  1. 一个可选的最大字段宽度,用一个正的十进制整数表示。

  2. 一个可选的长度指定符

  3. 必须的转换操作。

转换操作长度指定符参数类型
dhhchar *
dhshort int *
dint *
dllong *
dlllong long *
uhhunsigned char *
uhunsigned short int *
uunsigned int *
ulunsigned long *
ullunsigned long long *
ffloat *
fldouble *
fLlong double *
cchar *
schar *

示例:

    short s;
    scanf("%hd", &s);
    int n;
    scanf("%d", &n);
    long l;
    scanf("%ld", &l);
    long long ll;
    scanf("%lld", &ll);
    
    unsigned short us;
    scanf("%hu", &us);
    unsigned int un;
    scanf("%u", &un);
    unsigned long ul;
    scanf("%lu", &ul);
    unsigned long long ull;
    scanf("%llu", &ull);
​
    float f;
    scanf("%f", &f);
    double df;
    scanf("%lf", &df);
    long double ldf;
    scanf("%Lf", &ldf);

scanf与printf的不同

1.printf的后续参数不要加&,而scanf由于需要一个指针,所以需要加&。

2.printf的参数由于比int小的变量会升级为int,这样数据仍然是完整的。仅比int大的需要额外指明长度指示符。

3.scanf会将数据填充到对应的变量里去,必须指明被填充的对象是什么,用int来填充char很显然是错误的,所以必须明确指定长度指示符。例如%hhd用于char,%hd用于short。

转载于:C语言中scanf函数详解_c语言scanf_小杰码匠的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值