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

Linux C文件操作函数

C 文件操作函数学习笔记

文件打开模式一览

模式含义说明
r只读文件必须存在
w只写文件存在则清空,不存在则创建
a追加写入文件存在则追加,不存在则创建
r+可读可写文件必须存在
w+可读可写文件存在则清空,不存在则创建
a+可读可追加写入文件存在追加,不存在则创建
rb二进制读取文件必须存在
wb二进制写入文件存在清空,不存在创建

函数详解

fscanf

int fscanf(FILE *__restrict __stream, const char *__restrict __format, ...);
  • 功能:格式化从文件中读取内容

  • 参数

    • __stream: 文件指针

    • __format: 格式控制字符串(如 "%d %s"

    • ...: 用于存放读取的变量地址

  • 返回值

    • 成功:返回读取的项数

    • 匹配失败:返回 0

    • 出错/结束:返回 EOF


fputs

int fputs(const char *__restrict __s, FILE *__restrict __stream);
  • 功能:将字符串写入文件

  • 参数

    • __s: 要写入的字符串

    • __stream: 文件指针

  • 返回值

    • 成功:返回非负值

    • 失败:返回 EOF


fputc

int fputc(int __c, FILE *__stream);
  • 功能:写入一个字符到文件

  • 参数

    • __c: 写入的字符(作为 ASCII 值)

    • __stream: 文件指针

  • 返回值

    • 成功:返回写入的字符

    • 失败:返回 EOF


fprintf

int fprintf(FILE *__restrict __stream, const char *__restrict __fmt, ...);
  • 功能:格式化输出到文件

  • 参数

    • __stream: 文件指针

    • __fmt: 格式化字符串(如 "%d\n"

    • ...: 参数列表

  • 返回值

    • 成功:写入字符数(不含终止符)

    • 失败:EOF


fgets

char *fgets(char *__restrict __s, int __n, FILE *__restrict __stream);
  • 功能:从文件读取一行

  • 参数

    • __s: 字符数组(缓冲区)

    • __n: 最大读取长度(包含\0

    • __stream: 文件指针

  • 返回值

    • 成功:返回 __s

    • 失败或 EOF:返回 NULL

常用于 while(fgets(...)) 循环读取文件


fgetc

int fgetc(FILE *__stream);
  • 功能:从文件读取一个字符

  • 参数

    • __stream: 文件指针
  • 返回值

    • 成功:返回读取字符(作为 int)

    • 失败或 EOF:返回 EOF


fclose

int fclose(FILE *__stream);
  • 功能:关闭文件

  • 参数

    • __stream: 文件指针
  • 返回值

    • 成功:返回 0

    • 失败:返回 EOF


提示

  • 文件操作完一定要 fclose,避免内存泄漏或数据未写入磁盘。

  • fscanf/fgets/fgetc 为读取相关函数,使用时注意文件打开模式为读。

  • fputs/fputc/fprintf 为写入相关函数,注意文件必须是写模式或追加模式。

  • 判断是否读取结束可使用:

    if (feof(fp)) { /* EOF 处理 */ }
    
http://www.dtcms.com/a/324999.html

相关文章:

  • 谷歌DeepMind发布Genie 3:通用型世界模型,可生成前所未有多样化的交互式虚拟环境
  • C++移动语义、完美转发及编译器优化零拷贝
  • PostgreSQL 批量COPY导入优化参数配置
  • 近红外与可见光图像融合的多种方法实现
  • OpenAI正式发布GPT-5:迈向AGI的关键一步
  • Java基础-多线程
  • lesson34:深入理解Python线程:从基础到实战优化
  • hysAnalyser --- 支持文件转播UDP/RTP实时流功能
  • CompletableFuture实现Excel 多个sheet页批量导出
  • 【数据分析】循环移位岭回归分析:光遗传学冻结行为模式研究
  • 【PyTorch】单目标检测项目部署
  • MPLS的基本工作原理
  • AI玩具新浪潮:百亿资本涌入,情感计算重塑陪伴经济
  • WAIC2025逛展分享·AI鉴伪技术洞察“看不见”的伪造痕迹
  • JAVA中关于Stream流的使用
  • 虚拟主机示例
  • vuhub drippingblues靶场攻略
  • Windows环境下私有化部署Dify,并接入通义千问模型
  • UNet改进(31):基于Adaptive Attention的UNet设计与实践
  • 基于Spring SSE构建实时监控系统
  • Python 的列表 list 和元组 tuple 有啥本质区别?啥时候用谁更合适?
  • TC39x STM(System Timer)学习记录
  • 压力测试等工具源码包编译及使用方法
  • Vulnhub doubletrouble 靶场复现 详细攻略
  • Knuth‘s TwoSum Algorithm 原理详解
  • MyBatis 核心入门:从概念到实战,一篇掌握简单增删改查
  • 【东枫科技】FR3 可扩展测试平台,适用于 6G 研究与卫星通信,高达 1.6 GHz 的带宽
  • 【自动化运维神器Ansible】playbook案例解析:Tags组件实现任务选择性执行
  • 【01】华勤技术股份有限公司——华勤C++笔试,题目记录及解析
  • Java基础-使用反射做一个简易框架