C语言IO
1、什么是IO
I:input
o:output
输入:从键盘将数据输入到内存中
输出:从内存将数据拷贝到显示屏上
对IO更深层次的理解
Linux下一切皆文件
输入:从文件将数据输入到内存中
输出:从内存将数据拷贝到文件中
2、标准IO
标准IO由ANSI C标准说明
(1)可以跨平台,既可以在windows下使用,又可以在Linux上使用
(2)库函数
(3)有缓冲机制
(4)通过文件流指针来进行操作
(5)一般用于普通文件的操作
3、相关概念
3.1文件
一组相关数据的有序集合
文件名:这组集合的名称
3.2 文件类型
1、普通文件
a.ASCII码文件(文本文件) b、二进制文件
2、目录文件 d
3、块设备文件 b
4、字符设备文件 c
5、链接文件 l
6、管道文件 p
7、套接字文件 (socket)s
3.3 系统调用
系统:操作系统
调用:调用函数
系统调用:调用操作系统提供的函数
系统调用:操作系统提供给应用程序的接口(函数)
3.4 缓冲区
作用:减少系统调用的次数
全缓存:当缓冲区满、程序结束、强制刷新缓冲区时会刷新缓冲区
行缓存:当缓冲区满、程序运行结束、强制刷新缓冲区、遇到换行符时会刷新缓冲区
不缓存:没有缓存区,直接输出
程序运行起来之后,会默认打开三个文件,标准输入、标准输出、标准出错,对应的流指针分别为stdin、stdout、stderr
3.5 流和FILE指针
3.5.1 流
流:字节的进进出出
流的分类:
文本流:数字2001对应的文本流为’2’ ‘0’ ‘0’ ‘1’(50 48 48 49)
二进制流:数字2001对应的二进制流:00000111 11010001
3.5.2 FILE指针
每个被使用的文件都会在内存中开辟一个空间,用来保存文件的相关信息,这些信息保存在结构体中,取名为FILE
注意:标准IO中所有的操作都是围绕流来进行的,流用FILE *来描述
4、标准io相关函数
文件操作步骤:
打开文件
操作文件
关闭文件
4.1 打开文件
FILE *fopen(const char *pathname, const char *mode);
函数功能:打开文件
参数1:要打开文件的路径
参数2:打开的方式
r:以只读的方式打开文件,文件不存在则出错
r+:以可读可写的方式打开文件,文件不存在则出错
w:以只写的方式打开文件,文件不存在则新建,文件存在清空文件中的内容
w+:以可读可写的方式打开文件,文件不存在则新建,文件存在清空文件中的内容
a:以追加的方式打开只写的文件,文件不存在则新建,文件存在则追加到文件的末尾
a+:以追加的方式打开可读可写文件,文件不存在则新建,文件存在则追加到文件的末尾
返回值:成功返回文件流指针,失败返回NULL
4.2 关闭文件
int fclose(FILE *stream);
参数:fopen的返回值,已经打开的文件流指针
返回值:成功返回0,失败返回EOF(-1)
注意:EOF(end of file)只能判断是否到达文本文件的末尾,不能判断二进制文件
4.3 操作文件(读/写)
按字符读写、按行读写、按块读写
4.3.1 按字符读写
getchar()、putchar()只能从键盘输入
fgetc()、fputc() 即能从键盘输入、又可以从文件中输入
int fgetc(FILE stream);
功能:从指定的流中读取一个字符
参数:fopen的返回值,已经打开的文件流指针
返回值:成功返回读到ASCII码值,失败or读到文件末尾返回-1
int fputc(int c,FILE stream)
功能:向指定的流中输出一个字符
参数1:要输出的字符
参数2:fopen的返回值,已经打开的文件流指针
返回值:成功返回写入的ASCII码值,失败返回-1