admin管理员组文章数量:1530020
scanf()函数与printf()函数都是系统提供的库函数,只是printf()用于输出,而scanf()是用于输入的。若要使用scanf()函数,同样需要在程序开头包含头文件#include <stdio.h>
。该函数是用于从键盘输入数据,其用法与printf()的用法类似:
scanf(格式控制字符串,输入参数1,...,输入参数n);
格式控制字符串表示输入的格式,输入参数是变量的地址,格式是在变量名前加&
,&
表示取地址,如&a
。例如:scanf("%d", &a);
。输入完需要输入的数据后需按回车键,然后scanf()函数执行完毕。
格式控制字符串同printf()一样,包含两种信息:格式控制说明和普通字符。
1. 格式控制说明:
按指定的格式读入数据,它包含以
%
开头的格式控制字符,不同类型的数据采用不同的格式控制字符,同printf()基本一样。
scanf()函数的输入参数必须和格式控制字符串中的格式控制说明相对应,并且它们的类型、个数和位置要一一对应。 若不对应,可能会出现逻辑错误,但此时编译器并不会报错。
注:与printf()函数不同的是,scanf()函数double型数据使用格式控制说明
%lf
,其中的l是long的首字母;float型数据使用的是
%f
。而printf()函数double和float均使用格式控制说明
%f
。
2. 普通字符:
在输入数据时,需要原样输入的字符。例如
scanf("x=%ld",&x);
那么在程序运行时就要输入:
x=5.6
需要注意的是,这里出现的普通字符x=
必须也要原样输入,否则会出现错误。
一般在编写程序的过程中,scanf()函数的格式控制字符串中尽量少出现普通字符,一定要注意不能将提示信息放入其中,因为放在scanf()函数内的字符不会输出到屏幕上,是需要用户输入进去的,一般采用和printf()函数搭配使用。例如:
printf("Enter fahr:\n"); /*输入提示信息*/
scanf("%d", &fahr);
其运行效果如下:在提示处输入参数后按回车即可。
3. 输入多个数据:
scanf()可以一次输入多个数据参数,但是它们的类型、个数和位置要一一对应,scanf()格式控制符之间一般不需要空格。
例如下面的一段代码
int day;
double factor, initial, result;
scanf("%lf%lf%d", &initial, &factor, &day); /*正确的使用*/
scanf("%lf%d%lf", &initial, &factor, &day); /*错误,因为%d对应的位置为factor,而factor是double类型的*/
scanf("%lf%d%lf", &initial, &day, &factor); /*正确。类型顺序改变,相应的后面参数的顺序也要改变。*/
scanf("%lf %d %lf", &initial, &day, &factor); /*格式控制符之间添加了空格,运行效果是一样的*/
注: 输入字符型数据
需要注意的是scanf()输入多个字符型数据时,若中间有空格,也会被当成字符型数据。例如下面代码输入5 *
:
int n;
char ch;
scanf("%d%c", &n, &ch); //ch的值会成为空格
scanf("%d %c", &n, &ch); //此时才会将ch的值为*,但是输入的是多个空格的话ch的值仍为空格,需注意要求!
版权声明:本文标题:C语言-格式化输入函数scanf() 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726471266a1072120.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论