【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 : 实参是一个自定义字符串,一般填写出错的函数的函数名.

注 : 标准出错函数是无缓冲类型,出错信息直接输出到终端显示.
在这里插入图片描述

posted @ 2019-10-11 07:10  硫酸洗吊  阅读(11)  评论(0)    收藏  举报