标准文件和系统文件I/O

发布于:2025-07-20 ⋅ 阅读:(12) ⋅ 点赞:(0)

文件:标准文件IO、系统文件IO

Linux中一切皆文件(除网口外)。

标准文件IO:C语言标准库中的文件操作函数
    fopen、fread、fwrite、fclose、fprintf

系统文件IO:由操作系统直接提供的接口、直接与内核交互
    open、read、write、close

差异:
    1、缓存机制
      标准IO:
        默认使用缓冲区,数据先写入缓冲区,当满足条件时才做实际操作。
        作用:减少系统调用次数,提升效率。
      系统IO:
        没有默认缓冲区,每次都是进行系统调用,效率低。
    2、跨平台性
      标准IO:
        接口由C标注你定义,与操作系统无关,同一代码可在不同平台运行,跨平台性强。
      系统IO:
        接口是由操作系统决定,所以不能跨平台。
    3、操作对象
      标准IO:
        操作对象是 FILE*, 其封装了文件描述符、缓冲区等信息。
      系统IO:
        Linux下操作对象是文件描述符,Windows下操作对象是句柄。
    4、使用场景
      标准IO:
        通常在用户态下进行个操作。
      系统IO:
        一般用于底层设备驱动文件等控制。


#include <stdio.h>

/*
* 功能说明:以mode方式打开path文件
* 参数1:将要打开文件的路径及文件名
* 参数2:打开文件的方式
*   r   以只读方式打开文件,文件指针指向文件起始位置。
*   r+  以读写方式打开文件,文件指针指向文件起始位置。
*   w   以写的文件打开文件,如果文件存在则清空否则创建,文件指针指向文件起始位置。
*   w+  以读写方式打开文件,如果文件不存在则创建否则清空,文件指针指向文件起始位置。
*   a   以追加方式打开文件,如果文件不存在则创建,文件指针指向文件末尾位置。
*   a+  以读和追加方式打开文件,如果文件不存在则创建,如果读文件则文件指针指向文件起始位置,如果追加(写)则文件指针指向文件末尾位置。
* 返回值:成功返回FILE指针,失败返回NULL并且errno被设置。
*/
FILE *fopen(const char *path, const char *mode);

/*
* 功能说明:读取文件中的数据
* 参数1:用于存储待读取的数据
* 参数2:每次读取的字节数
* 参数3:总共读取的次数
* 参数4:待读取文件的FILE指针
* 返回值:返回完整读取的nmemb数
*/
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

/*
* 功能说明:向文件中写入数据
* 参数1:待写入的数据
* 参数2:每次写入的字节数
* 参数3:总共写入的次数
* 参数4:待写入文件的FILE指针
* 返回值:返回完整写入的nmemb数
*/
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

/*
* 功能说明:关闭文件
* 参数1:待关闭文件的FILE指针
* 返回值:成功返回0,失败返回EOF且errno被设置
*/
int fclose(FILE *stream);


网站公告

今日签到

点亮在社区的每一天
去签到