一、输出printf函数
二、输入函数scanf函数
一、输出printf函数
- 原理
(1)功能
printf()函数是输出函数,要使用他,我们首先要引入#include<stdio.h>,我们先从他的功能说起,这个函数是将原有的数据,按一定的格式输出显示在控制台上,也就是他能以用户控制下的各种预定指定格式输出数据。他的原型函数是 int printf("control string ",argument list);
(2)返回值
c语言的返回值是由return决定的,他的意思是返回输出字符的数量,如果错误会返回EOF。
(3)函数的参数
有两个参数,其中control string是顾名思义就是控制字符串,这个是用来控制输出格式的,它是由“”、纯文本、空格、格式命令(#define)、非打印文字(各国的语言文字,符号)组成的,我们的控制字符都是放在“”中的,纯文本与空格在printf函数中他会原封不动的在屏幕中打印出来,而格式命令有很多,主要是用来限制一些变量,常量,表达式,函数(指有返回值的函数)的输出形式。
(4)格式命令
单字符 | %c |
字符串 | %s |
带符号的十进制整数 | %d(整数的整字位数) |
浮点数(十进制计数法) | %f(数字的整数部分如实输出。小数部分保留6位。如果小数部分不是6位,末尾填零;否则,四舍五入取到6位 |
浮点数(十进制计数法) | %lf |
浮点数(指数计数法) | %e |
不带符号的十六进制整数 | %x |
不带符号的八进制整数 | %o |
不带进制的十进制整数 | %u |
(5)打印字符
转义序列 | 名称 | 描述 |
\a | 警告 | 产生一则警告 |
\b | 退格 | 将光标退回下一格 |
\f | 换页 | 将光标移到下一页的第一格 |
\n | 换行 | 将光标移到下一行的第一格 |
\r | 回车 | 将光标移到当前行的第一格 |
\t | 水平制表 | 将光标移到下一个水平制表位置 |
\v | 垂直制表 | 将光标移到下一个垂直制表位置 |
- printf函数进阶
(1)数字宽度修饰符
例如:printf("%4d",500);可以用于浮点型,双精度型和字符串型;范围宽度修饰符是一个整数,定义了数据项的范围宽度。
(2)"-"修饰符
例如:printf("%-d",500);数据项在范围内向左对齐,从范围最左侧的位置开始输出数据项。
(3)精度修饰符
例如:printf("%.2f",3.14159);可以用在浮点型,双精度型或字符串型中,如果用在浮点型或双精度型数据中,数字字符串表示小数右侧最多可输出的数字位数。
二、输入函数scanf函数
1.原理
(1)Scanf原理
用键盘输入,键盘输入又叫标准输入。当scanf函数读取标准输入时,如果还没有输入任何内容,那么scanf函数就叫会被卡住(专业术语叫阻塞)。在scanf中要注意一点,就是在使用字符型的数据类型时,我们要用到行缓冲的知识。
(2)行缓冲
在这种情况下,在当输入和输出遇到换行符时,将真正执行的I/O处理操作,这时,我们输入的字符先存放到缓存中,等按下回车键换行时才进行实际的I/O操作,典型代表是标准输入缓冲区(stdin)和标准输出缓冲区(stdout),printf使用的是stdout.
当然在scanf函数在读取整型数、浮点数、字符串时,会忽略’\n’,空格等字符(忽略是指scanf函数在执行时会首先删除这些字符,然后在阻塞)。Scanf函数匹配一个字符时,会在缓冲区删除对应的字符,因为在执行scanf(“%c”,&c)语句时,不会忽略任何的字符,所以scanf(“%c”,&c)读取了还在缓冲区中残留的’\n’
(3)代码演示
#include<stdio.h>
int main(){
int i;
char c;
float f;
scanf("%d",&i);
printf("i = %d\n",i);
fflush(stdin);
scanf("%c",&c);
printf("c=%c\n",c);
scanf("%f",&f);
printf("f = %0.1f\n",f);
return 0;
}
运行结果: