printf和scanf函数为重要的文字交互函数,printf用于输出字符串,scanf用于扫描用户输入,是终端界面最常用的两个函数。
这两个函数都包含在stdio.h标准输入输出头文件中,在使用中需要包含。
在学习这两个函数前,我们先要了解一下字符串。
1、字符串的认识
在c语言中没有字符串的概念,我们所接触到的基本数据类型中只有int、char、Bool、float、double等类型,而字符串是由一系列的字符所组成,为了表示字符串,需要用到字符数组,在一个字符数组中,前面的元素为char类型(各占8个bit),最后一位存储一个结束标志\0,这样以来,程序就可以通过这个字符数组的首地址(数组名标识符)和结束标志(\0)从内存中读取该字符串。
2、占位符的认识
占位符是一种特殊的运算,用于将一些其他数据类型的数据转换为特殊的字符格式,嵌入到某个字符串中。有如下几种:
占位符 | 作用 |
---|---|
%a,%A | 读入一个浮点值(仅C99有效) |
%c | 读入一个字符 |
%d | 读入十进制整数 |
%i | 读入十进制,八进制,十六进制整数 |
%o | 读入八进制整数 |
%x,%X | 读入十六进制整数 |
%s | 读入一个字符串,遇空格、制表符或换行符结束。 |
%f,%F,%e,%E,%g,%G | 用来输入实数,可以用小数形式或指数形式输入。 |
%p | 读入一个指针 |
%u | 读入一个无符号十进制整数 |
%n | 至此已读入值的等价字符数 |
%[] | 扫描字符集合 |
%% | 读%符号 |
3、printf函数
该函数接受一个字符串作为参数,其作用是将传入的字符串打印在终端窗口上。
字符串可以包含占位符。
举例如下:
#include <stdio.h>
//程序入口(主函数)
int main()
{
int count=100;
char grade='B';
float height=1.78f;
double pi=3.141592654;
//输出整数,%d也可
printf("数量为 %i \n",count);
//输出字符
printf("等级为 %c \n",grade);
//输出两位小数,默认6位
printf("身高为 %.2f 米\n",height);
//输出多位小数,.10表示总共10位数
printf("圆周率 %.10g \n",pi);
return 0;
}
在该例子中,定义了int、char、float、double等数据类型,他们可以通过占位符嵌入到字符串中,字符串中的\n为制表位,用于换行输出。
输出结果如下:
数量为 100
等级为 B
身高为 1.78 米
圆周率 3.141592654
4、scanf函数
scanf函数用于获取用户输入数据,并存储到内存变量中。该函数需要接受两种参数,一种是占位字串,用于表示输入数据格式,一种是内存单元的地址,用于存储输入的数据。
为此我们需要定义相应的变量用于储存用户输入
int a;
int b;
然后调用函数scanf,并设置合适的输入格式:
scanf("%d;%d",&a,&b);
该代码中两个占位符之间用“;”隔开,表示接收的数据之间要用“;”隔开,缺省的话,可以用空格表示,后面的参数前面加&表示变量地址。
通过以上步骤即可将用户输入的数据保存到内存单元中。
5、其他
1、scanf要求用户输入数据,不会有任何提示,为了交互性的考虑,需要用printf函数进行必要的提示;
2、用户输入的数据不一定复合格式,要设置必要的检查环节,确保用户输入正确的数据;
3、printf多用于程序的调试,要合理运用。