当前位置: 首页 > news >正文

c语言和系统的文件接口

一、C语言的文件接口

1、打开文件

  • 函数:
  • 参数:

               filename:打开在参数 filename 中指定其名称的文件,并将其与在将来的作中可以通过返回的FILE 指针标识的流相关联。

                mode:以mode的权限打开,权限有一下几种

  • 返回值

         返回一个文件指针,该指针指向被执行的文件。

  • 代码
    FILE *fd=fopen("myfile","w")
    //以只写的方式打开文件

2、文件写入

  • 函数: 

  •  参数:

        prt:该指针指向需要写入文件的内容

        size:每个元素的大小,以字节为单位

        count:元素的个数

        stream:需要写入到的文件

  • 返回值:

        写入成功将返回写入元素的个数

  • 代码:
const char buffer[]={'a','b','c'};
FILE *fd=fopen("myfile","w");
fwrite(buffer,sizeof(char),sizeof(buffer),fd);
//向“myfile”文件中写入abc

3、文件读取

函数:

参数:

        ptr:一个指向大小至少为count的内存块的指针

        size:要读取的每个元素的大小

        count:要读取的元素个数

        stream:指向要读取的文件的指针

返回值:

        读取成功就返回读取元素的个数

代码:

char buffer[1024];
FILE *fd=fopen("myfile","r");
fread(buffer,sizeof(char),sizeof(buffer),fd);
//向“myfile”文件中读取

4、关闭文件

函数:

参数:

        stream:指向需要关闭的文件的文件指针

返回值:

        关闭成功返回0,失败则返回-1

代码:

FILE *fd=fopen("myfile","r");
int n=fclose(fd);
//关闭文件“myfile”

二、系统文件接口

1、打开文件

  • 函数:
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);
  • 作用:

        打开一个文件

  • 参数:

        pathname:要打开的文件的名称

        flags

        mode:如果flags中选择了O_CREAT时该文件的最终权限由mode和unmask共同决定

  • 返回值:

        打开成功就返回该文件的文件描述符,否则返回-1

  • 代码:
// 只读打开现有文件
int fd = open("/etc/passwd", O_RDONLY);
if (fd == -1) { perror("open"); }// 创建新文件并设置权限(若存在则报错)
fd = open("newfile.txt", O_WRONLY | O_CREAT | O_EXCL, 0644);

2、写文件

  • 函数:
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
  • 作用:

        向文件中写入

  • 参数:

        fd:需要写入内容的文件描述符

        buf:需要写入的内容

        count:需要写入内容的大小以字节为单位

  • 返回值:

        成功时返回实际写入内容的大小,失败返回-1

  • 代码:
ssize_t total = 0;
while (total < count) {ssize_t n = write(fd, buf + total, count - total);if (n == -1) {if (errno == EINTR) continue; // 被中断则重试break; // 其他错误处理}total += n;
}

3、文件读取

  • 函数:
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
  • 作用:

        向指定文件读取内容

  • 参数:

        fd:标识要读取的目标文件或设备(如普通文件、管道、套接字等)

        buf:指向用户分配的内存区域,用于存储读取的数据

        count:指定本次read请求读取的最大字节数

  • 返回值:
  • 代码:
ssize_t total = 0;
while (total < count) {ssize_t n = read(fd, buf + total, count - total);if (n == -1) {if (errno == EINTR) continue;break;} else if (n == 0) {break;  // EOF}total += n;
}

4、关闭文件 

  • 函数:
#include <unistd.h>
int close(int fd);
  • 作用:

        关闭已经打开的文件

  • 参数:

        fd:需关闭的文件描述符,必须是有效的、已打开的描述符

返回值:

  • 代码:
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>int main() {int fd = open("example.txt", O_RDWR);  // 打开文件if (fd == -1) {perror("open failed");return 1;}// 文件操作(如 read/write)char buf[1024];ssize_t n = read(fd, buf, sizeof(buf));// 关闭文件并检查错误if (close(fd) == -1) {perror("close failed");return 1;}return 0;
}

相关文章:

  • 21 程序控制语句详解:循环控制(while、do-while、for、循环机制与原理、嵌套循环)
  • lua脚本学习笔记1:Vscode添加lua环境_lua基本语法
  • Baklib构建企业CMS高效协作与安全管控体系
  • 超全GPT-4o 风格提示词案例,持续更新中,附使用方式
  • 使用Chrome waterfall 查看接口耗时
  • Python包__init__.py标识文件解析
  • 跨模态行人检索方法综述(上)
  • 缓存的更新机制
  • SQL进阶之旅 Day 2:高效的表设计与规范:从基础到实战
  • Anthropic推出Claude Code SDK,强化AI助理与自动化开发整合
  • 【时时三省】Python 语言----字符串,列表,元组,字典常用操作异同点
  • R语言科研编程-标准偏差柱状图
  • 2025深圳国际无人机展深度解析:看点、厂商与创新亮点
  • 开发者工具箱-鸿蒙网络工具之Ping工具开发实践
  • 自媒体运营新利器:账号矩阵+指纹浏览器,解锁流量密码
  • React整合【ECharts】教程001:柱状图的构建和基本设置
  • 【uniapp 开发经验】小程序移动端新增页面适配指南
  • 超越OpenAI CodeX的软件工程智能体:Jules
  • Elasticsearch实操案例
  • 基于ssm+mysql的班级管理系统(含LW+PPT+源码+系统演示视频+安装说明)
  • 做外贸去哪些网站找老外/网店运营培训
  • 新手如何做网站的教程/营销方案怎么写
  • 诸暨网站制作设计/短视频seo营销
  • 深圳网站建设需要多少费用/环球网广东疫情最新消息
  • 上海微网站设计/常熟网络推广
  • 做网站 挣广告联盟的佣金/搜索引擎优化自然排名的优点