Linux标准IO编程

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
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为错误码
返回错误码对应的错误信息

你可能感兴趣的:(IO,programming,and,network,pro)