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的值仍为空格,需注意要求!
本文详细介绍了scanf()和printf()函数在程序中的使用,包括格式控制字符串、不同类型数据的输入、输入多个参数的注意事项以及与printf()的配合。重点讲解了如何正确处理格式控制和普通字符,以及常见错误和最佳实践。
580

被折叠的 条评论
为什么被折叠?



