scanf的用法

scanf的用法

scanf从缓冲区读取数据,每次读取一个数据,如果缓冲区中无内容,则出现堵塞,在运行窗口要求用户输入;

scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
且返回值为int型

一,scanf可以通过键盘输入数据到变量中,它的格式有以下两种
1,scanf(“输入控制符”,输入参数);

%d 读入十进制整数
%o 读入八进制整数
%x,%X 读入十六进制整数
%c 读入一个字符
%s 读入一个字符串
%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。
%u 读入一个无符号十进制整数
h用于d,o,x前,指定为short
l用于d,o,x前,指定为long,用e,f 前指定为double

2,scanf(“非输入控制符 输入控制符”,输入参数);
 非控制符一定要原样输入,还有注意如果非输入控制符中有字符
 的话,在输入的时候不要忘记切换到英文输入法来输入英文字符
 在赋值的时候如果用中文输入法输入了‘ ,’,结果就成了这样

在这里插入图片描述
在这里插入图片描述

二,通过scanf进行赋值
   1,指定输入数据所占列宽scanf(“%3d%3d”,&a,&b)
        输入:123456系统自动将123赋给a,456赋给b
        
   2,%后面加‘*’用来抑制输入。scanf(“%2d%*3d%2d”,&a,&b)
   输入:1234567。将12赋给a,67赋给b。个数据”345”被跳过不赋给任何变量。
   
 3,  输入数据流分隔。根据格式字符的含义从输入流中取得数据,当输入流中数
 据类型与格式字符要求不符时,就认为这一项结束。
 如:scanf(“%d%c,%d”,&a,&b,&c);
 如果输入如下信息:12r12则scanf函数在接收数据时发现”r”类型不匹配,于是把
 12赋值给a,把”r”赋给变量b,最后把12赋给c。
 
 4,隐示分隔符。空格、制表符’\t’,换行符/回车键’\n’都是C语言认定的数据分隔
 符。
注意

1,scanf函数不能控制精度 如 scanf(“3.2%”,&a);
这样是错误的
2,在使用scanf函数后,缓冲区可能会存有’\n’,这样如果使用getchar/gest时会直接把’\n’进行赋值,这时可以使用
1, 使用 getchar();来吃掉这个换行键
2,使用 fflush(stdin); 来清空缓冲区;

  • 17
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值