Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说scanf的用法,希望能够帮助你!!!。
scanf("%d%d", &a, &b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
且返回值为int型
%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
非控制符一定要原样输入,还有注意如果非输入控制符中有字符
的话,在输入的时候不要忘记切换到英文输入法来输入英文字符
在赋值的时候如果用中文输入法输入了‘ ,’,结果就成了这样
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); 来清空缓冲区;
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章