标准输入输出是基于标准输入输出库实现的。
知识点大纲 『
*1 标准输入输出的基本操作,包括文件的打开与关闭,缓冲区的操作等。
*2 非格式化输入输出, 包括单个字节,字符串(行)以及数据块的输入输出。
*3 格式化输入输出。
』
-11.1 标准输入输出的基本操作
标准输入输出操作是通过控制结构 FILE 进行。
文件控制结构中包含处理文件所需的全部信息,例如文件名,文件当前的读写位置,用于该文件读写的内存缓冲区位置等。打开文件时,系统会在内存中自动建立该文件的控制结构。关闭文件时,文件控制结构被释放。在对文件进行操作之前,要首先获取文件的指针,即指向文件控制结构的指针,后续操作都通过该指针进行。
标准输入输出时,有 3 个比较特殊的文件,如下 :
*1 标准输入文件(stdin) : 一般为键盘
*2 标准输出文件(stdout): 一般为显示器
*3 标准错误输出文件(stderr) : 一般为显示器
-11.1.1 文件的打开
#include <stdio.h>
FILE *fopen(const char *filename, const char *modes);
例如 : FILE *fp; fp = fopen("./hello.c", "r");
-11.1.2 文件的关闭
对文件操作完成后,应该关闭文件,进而释放文件所占用的系统资源。关闭后,文件指针将不再有效。
#include <stdio.h>
int fclose(FILE *fp);
-11.1.3 缓冲区的刷新
#include <stdio.h>
int fflush(FILE *fp); 写入到磁盘文件或者输出到用户终端。
int fpurge(FILE *fp); 清空缓冲区。
-11.1.4 缓冲区属性的设置 (缓冲区的大小和类型都可以通过函数来设置)
*1 全缓冲 *2 行缓冲 *3 无缓冲
#include <stdio.h>
int setvbuf(FILE *fp, char *buf, int mode, size_t size);
-11.2 非格式化输入输出
-11.2.1 单个字节输入输出
int fgetc(FILE *fp);
-11.2.2 字符串输入输出
char *fgets(char *s, int n, FILE *fp);
-11.2.3 数据块的输入输出
size_t fread (void *ptr, size_t size, size_t n, FILE *fp);
size_t fwrite(void *ptr, size_t size, size_t n, FILE *fp);
-11.3 格式化的输入输出
int fprintf(FILE *fp, const char *format, ...);