【C语言学习笔记五】----C语言标准输入输出系统

标准I/O的缓冲类型:
缓冲区:
在进行标准输入与输出时,数据并不是直接被函数获取(输入)或者打印显示到终端(输出),而是先保存在一个系统自动分配的缓冲区内.当满足一定的条件时,数据才进行实际的I/O(输入输出)操作.
缓冲类型:
全缓冲: 填满缓冲区后才进行实际的I/O操作.
行缓冲: 当输入和输出中遇到换行符时,进行实际的I/O操作.
无缓冲: 不进行数据缓存,直接进行实际的I/O操作.
常用标准输出函数:
按字节输出:向终端输出一个字节(字节).
#include <stdio.h> //头文件
int putchar(int c); //函数原型,在系统头文件中定义.
参数 : c :传递给形参c的实参是一个整型常量\字符型常量\整型变量\字符型变量.;
返回值 : 成功返回输出的字符;出错返回-1.
格式化输出 :
格式化输出就是将数据按照一定的格式输出.
#include <stdio.h> //头文件
int printf(const char *format, …); //函数原型
参数 : format :是一个字符串,用"*****"的形式编写.这个字符串可以同时包含自定义输出信息和格式转换符,
如果没有数据需要格式化输出时,我们就可以只输出自定义信息;反之,我们也可以只格式化输出数据,而不带自定义输出信息.
形参表,传递的实参是与参数format中格式转换符对应的常量或变量.格式转换符与传递的实参是一一对应的: 实参是何种数据类型,format中就要使用对应的格式转换符;传递的实参有多少个,format中就要有对应的多少个格式转换符.多个实参之间用' , '隔开.
返回值 : 成功返回输出的数据字节数;出错返回负数.
缓冲类型: 行缓冲,遇到换行符’\n’才进行实际的I/O操作.我们使用printf函数进行实际数据的输出时,一定不要漏写换行符’\n’,不然可能造成数据读写错误.
格式转换符:
%d : 格式化输入输出十进制整数.
%u : 格式化输入输出无符号十进制整数.
%o : 格式化输入输出八进制整数.
%x : 格式化输入输出十六进制整数.
%c : 格式化输入输出单个字符.
%s : 格式化输入输出一个字符串.
%f : 格式化输入输出小数形式的十进制浮点数.
%e : 格式化输入输出指数形式的十进制浮点数.
%p : 格式化输入输出十六进制表示形式的指针数据.
格式转换修饰符: 在格式转换符的%右边使用(%ld),对数据的输出格式作进一步的修饰.
n : 整型数n,指定输出整型数据的域宽.实际域宽大于n按实际域宽输出;实际域宽小于n则在数据的左
边补空格,右对齐.
比如: 要输出数据134,若指定域宽n为2,则输出格式为"134";若指定域宽为6,则输出为" 134".
-n: 使用方法跟第一条一样.区别在于若实际域宽小于n,则在数据的右边补空格,左对齐.
0n: 使用方法跟第一条一样.区别在于若实际域宽小于n,则在数据的左边补0,右对齐.
.n: 若输出数据为浮点数,则是指定小数点后的显示位数(四舍五入);若输出数据为字符串,则是指定
实际输出的字符的个数.
l : 不是数字1,是小写字母l.若输出数据是整型数,则是指定输出长整数数据;若输出数据是浮点型,
则是指定输入输出双精度浮点型数据
+ : 在有符号整数前显示正号'+'.
# : 在输出数据前显示前缀: %#o,显示八进制前缀0.%#x,显示十六进制前缀0x.
常用标准输入函数:
按字节输入: 从终端中获取一个字节(字符).
#include <stdio.h> //头文件
int getchar(void); //函数原型
返回值: 成功返回读取到的字符,出错返回-1.
注: getchar函数一般用于阻塞程序执行(防止程序闪退)或者消除在格式化输入整型数据后,回车符对数据的影响.
格式化输入: 将数据按照一定的格式输入.
#include <stdio.h> //头文件
int scanf(const char *format, …); //函数原型
参数: format : 是一个字符串,但跟printf函数不同的是,format中只包含格式转换符,不包括自定信息.
形参表,传递的实参是用于接收输入数据的自定义缓存区的地址.其它使用特性(格式)跟printf函数一致.

注: 1.地址涉及到指针部分知识,暂时不做介绍.
2.scanf函数跟printf函数一样,一次可以操作多个数据.但scanf函数操作多个数据使用起来稍微复杂,
容易出错.而且操作多个数据的情况也特别少,故我们重点学习如何通过scanf函数进行单个数据的输入.
返回值: 成功返回与指定格式相匹配的数据的个数,当匹配不成功返回值为0;出错返回-1.
缓冲类型: 行缓冲,遇到空格或回车则认为当前数据输入结束.
注: scanf函数对格式转换符和格式转换修饰符的使用与printf函数一样,但scanf函数一般只使用格式转换符,不使用格式转换修饰符.
标准出错函数:
当程序中某个函数执行出错,我们可以通过标准出错函数向终端输出错误信息:
#include <stdio.h> //头文件
#include <errno.h> //头文件
void perror(const char *s); //函数原型
参数: s : 实参是一个自定义字符串,一般填写出错的函数的函数名.
注 : 标准出错函数是无缓冲类型,出错信息直接输出到终端显示.

浙公网安备 33010602011771号