IO分为:标准IO(stdio)和系统IO(sysio),两者间的区别:
类型 | 可移植性 | 实时性 | 吞吐量 | 功能 |
---|---|---|---|---|
STDIO | 高 | 低 | 高 | 受限 |
SYSIO | 低 | 高 | 低 | 自由 |
系统IO是由内核中的函数库提供的.不同的操作系统所提供的IO接口时不同,所以使用系统IO的移植性差.如果想要移植系统IO所实现的程序到目标平台上,就带按照目标平台所提供的系统IO接口对程序进行修改.
1.fopen()
//打开一个流
#include <stdio.h>
FILE *fopen(const char *path,const char *mode);
功能:将指定目录下的文件按照相应的方式打开.
参数:
path:要打开的文件的所在的目录.
mode:文件的打开方式,一共六种:
- r:文件以只读方式打开,文件位指针被定位到文件首,如果要打的文件不存在就报错.
- r+:文件以读写方式打开,文件位指针被定位到文件首,如果要的开的文件不存在就报错.
- w:文件以只写方式打开,如果文件不存在就创建,如果文件存在就将文件截断为0,并且将文件位指针定位到文件的首.
- w+:文件以读写的方式打开,如果文件不存在就创建,如果文件存在就将文件截断为0,并且将文件位指针定位到文件首.
- a:文件以追加的方式打开,文件不存在则创建,且文件位置指针会被定位到文件最后一个有效字符的后面的下一个有效字符.(EOF,end of file)
- a+:文件以读和追加的方式打开,文件不存在则创建,且文件位指针会被定位到文件首,但是写总是定位到文件最后一个有效字符的下一个字符.
返回值:
FILE是标准库定义的一个结构体,函数返回的FILE的指针,是我们打开该文件的依据,后面我们要对文件进行的各种操作都是依靠该指针进行的,注意:fopen()打开一个文件后,记住要用fclose()将该文件资源关闭.
error值:
如果该函数返回一个NULL指针,表示该文件打开失败,可以通过error来获取到具体的失败原因.error是标准C中定义的整型数,用来表示上一次发生的错误.
error是一个整型数,用户无法得知该错误的解释,perror()会自动读取error的值并将其转换成相应的文字解释,并打印到标准输出中.strerror()不会自动读取error的值,需要我们将error的值传给它,而且strerror也不会将错误的文字描述输出到标准输出上,而是将字符串返回给我们.精灵进程可以使用stre