c语言scanf函数

定义:scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到变量中。
格式:scanf(“格式控制字符串”,地址表列);
例如:scanf(“%d”,&a);
&是一个取地址运算符,&a是一个表达式,作用是求变量的地址。

下面举几个例子说明一下scanf在应用中会遇到的问题:

例1:
int a,b,c;
printf(“input a,b,c\n”);
scanf("%d%d%d",&a,&b,&c);
printf(“a=%d,b=%d,c=%d”,a,b,c);
在上述scanf语句的格式串中没有非格式字符在“%d%d%d”之间做输入间隔,因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。如:
7 8 9

7
8
9
scanf("%d %d %d",&a,&b,&c); 同上

例2:
在这里插入图片描述
当输入为1 2 3时,把1赋予a,2被跳过,3赋予b;
原因:符号*用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。

例3:
scanf("%5d",&a);
输入:12345678,只把12345赋予a,其余部分被截去。
scanf("%5d%5d",&a,&b);
输入:1234567890
会把12345赋予a,把67890赋予b。
原因:用十进制整数指定输入的宽度。

例4:
scanf("%c%c%c",&a,&b,&c);
输入:q w e
会把‘q’赋给a,‘ ’赋给b,‘w’赋给c。只有输入qwe时,才能对应字符赋值。

scanf("%c %c %c", &a, &b, &c);
(1)输入:q w e
(2)输入:qwe
这两种输入的结果都是会把‘q’赋给a,‘ ’赋给b,‘w’赋给c,"%c %c %c"中的空格不会影响字符的输出;

例5:
scanf("%d,%d,%d",&a,&b,&c);
输入:5,6,7
scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);
输入应为:a=5,b=6,c=7
原因:格式控制串中有非格式字符则输入时也要输入非格式字符。

例6:
int a;
scanf("%d",&a); //输入10
printf("%lf\n",(float)a); //输出10.000000
printf("%lf", a); //输出0.000000
int型如果想按照%lf输出完整的数据,需要做强制类型转换;
如果不做强制类型转换,按照float型输出的结果是0.000000,这里暂不讨论了。

备注:
(1)scanf中没有精度控制,如scanf(“%6.2f”,&a)是非法的。

  • 21
    点赞
  • 0
    评论
  • 46
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值