scanf的用法

(3) 2024-04-28 09:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说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的用法_https://bianchenghao6.com/blog__第1张
scanf的用法_https://bianchenghao6.com/blog__第2张

二,通过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); 来清空缓冲区;

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复