Linux标准IO编程
linux下的标准I/O的编程方法:
- 什么是标准I/O
- 什么是流
- 流的一些处理方式
什么是标准I/O
即C定义来操作I/O的一系列函数
首先,得明白啥是系统调用,系统调用,是一种接口,提供给程序以分配内存、创建进程、实现进程之间的通信。
因为每个系统的系统调用都不一样,所以程序员就想出来定义一个编程接口来使用这些系统调用,俗称API。而C库是使用最广的了,而在C库了定义了一些标准I/O函数来操作系统实际的I/O。
什么是流
操作文件的时候,标准I/O会定义一个FILE的结构体来描述该文件,形象的称这个FILE结构体为流。
流的缓冲类型有三种
1. 全缓冲:当填满I/O缓存区后才进行实际的I/O操作。
2. 行缓冲:当输入输出遇到换行符时进行I/O操作。(标准输入流和标准输出流)
3. 无缓冲:即在对流的操作时执行I/O操作。(标准出错流)
流的一些处理方式
流的打开
fopen() fdopen() freopen()三种都可以打开文件;
函数原型:
FILE*open(const char *path,const char*mode);
----------
*path 文件地址,mode使用的打开模式
成功:得到指向FILE的指针
失败:NULL*
mode模式解析:+表示打开可读写,没有+则是打开只读或只写
r只读 w 只写(文件长度为0则擦写,不存在则建立)
a以附加方式打开(即文件存在则加在后面,不存在则建立文件)
三个流:标准输出流(stdout)标准输入流(stdin)和标准错误流(stderr)
流的关闭
fclose()
函数原型
int fclose(FILE*steam);
----------
成功:返回0
失败:EOF
错误处理
perr()
函数原型
void perror(const char*s)
----------
无返回值
示例:输出错误信息
#include<stdio.h>
int main()
{
FILE*fp;
if((fp = fopen("1.txt","r"))==NULL)
{
perror("fail to open");
}
fclose(fp);
return 0;
}
strerror()
错误处理相关函数
函数原型
char *strerror(int errnum);
----------
errnum为错误码
返回错误码对应的错误信息