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

C语言文件操作全攻略:从打开fopen到读写r,w,一网打尽

前言

在C语言中,文件操作是一项基础而强大的功能,它允许程序与存储在硬盘上的数据进行交互。无论是读取配置文件、处理日志文件,还是创建新的数据文件,C语言都提供了丰富的函数库来支持这些操作。本文将整合并详细介绍fopen(), 对文件进行操作时,fopen 函数用于打开文件,并返回一个指向 FILE 的指针,该指针用于后续的文件操作。fopen 函数的第二个参数指定了文件的打开模式,其中 r, r+, w, w+ 是最常用的几种模式.fgetc(), fputc(), fscanf(), 和 fprintf()等关键函数,帮助读者从打开文件到读写操作,全面掌握C语言文件处理技巧。

1. 文件打开:fopen()函数

一切文件操作始于fopen()函数,它用于打开文件并返回一个指向FILE的指针,该指针将用于后续的文件读写操作。fopen()函数的第二个参数指定了文件的打开模式,包括r(只读)、r+(读写)、w(只写,覆盖原文件)、w+(读写,覆盖原文件)等。

示例

FILE *fp = fopen("example.txt", "r"); // 以只读模式打开example.txt  
if (fp == NULL) {  perror("Error opening file");  return -1;  
}  
// 使用fp进行文件操作...  
fclose(fp); // 操作完成后关闭文件
  1. r 模式(只读模式)
    • 打开文件用于读取。文件必须存在,否则打开失败。
    • 文件指针(如果成功)会被放置在文件的开头。
    • 尝试写入文件会导致错误。
    • 适用于读取文件内容的场景。
  2. r+ 模式(读写模式)
    • 打开文件用于读写。文件必须存在,否则打开失败。
    • 文件指针(如果成功)会被放置在文件的开头。
    • 允许读取和写入操作,但写操作不会覆盖文件原有内容,除非文件指针被移动(使用 fseek, fgetc 等函数)。
    • 适用于需要读取文件内容并可能修改部分内容的场景。
  3. w 模式(只写模式)
    • 打开文件用于写入。如果文件存在,则文件长度被截断为零(即文件内容被删除),如果文件不存在,则创建新文件。
    • 文件指针(如果成功)会被放置在文件的开头。
    • 尝试读取文件会导致错误,直到文件被关闭并重新以读取模式打开。
    • 适用于需要创建新文件或覆盖现有文件内容的场景。
  4. w+ 模式(读写模式)
    • 打开文件用于读写。如果文件存在,则文件长度被截断为零,如果文件不存在,则创建新文件。
    • 文件指针(如果成功)会被放置在文件的开头。
    • 允许读取和写入操作,但由于文件在打开时被截断,所以通常首先执行写操作,然后通过移动文件指针来读取内容(如果有的话)。
    • 适用于需要同时写入新内容和可能读取(稍后)这些内容的场景,但注意文件内容在打开时会被清空。

2. 字符读写:fgetc()fputc()

  • fgetc():从指定的文件流中读取下一个字符,并将其作为int类型返回。如果到达文件末尾或发生错误,则返回EOF
  • fputc():将给定的字符写入到指定的文件流中。如果成功,则返回写入的字符;如果发生错误,则返回EOF

示例

char ch;  
while ((ch = fgetc(fp)) != EOF) {  putchar(ch); // 读取并输出文件内容  
}  char outChar = 'A';  
fputc(outChar, fp); // 假设fp已打开为写入模式,向文件写入字符'A'

3. 格式化读写:fscanf()fprintf()

  • fscanf():从文件中读取格式化的输入。它根据提供的格式字符串解析文件中的数据,并将解析的结果存储在后续的参数中。
  • fprintf():向文件中写入格式化的输出。与printf()类似,但它将输出写入到指定的文件流中。

示例

int age;  
char name[50];  
fscanf(fp, "%s %d", name, &age); // 假设文件格式为"名字 年龄"  
printf("Name: %s, Age: %d\n", name, age);  fprintf(fp, "New Name: %s, New Age: %d\n", "Jane Doe", 35); // 写入新数据到文件

总结

通过fopen(), fgetc(), fputc(), fscanf(), 和 fprintf()等函数,C语言提供了强大的文件操作能力。从打开文件到读写操作,每一步都有明确的函数支持,使得文件处理变得既简单又高效。无论是处理文本文件还是二进制文件,掌握这些函数都是进行C语言编程时不可或缺的技能。

希望本文能帮助读者更好地理解C语言中的文件操作,并在实际编程中灵活运用这些技巧。通过不断的实践,你将能够更加熟练地处理文件,为程序的强大功能打下坚实的基础。

我会以“时”为尺,丈量自己的进步,用“嘉”言“嘉”行,努力珍惜时间,向着她一步步迈进!(眼中闪烁着坚定的光芒,透露出对未来的决心和期待)

respect

http://www.lryc.cn/news/434748.html

相关文章:

  • 【0328】Postgres内核之 “User ID state”
  • VisualStudio环境搭建C++
  • linux 文件压缩并且切割压缩
  • 支持iPhone 16新品预售,饿了么同步上线专人配送等特色服务
  • 低光增强效果展示
  • 李诞-2021.8脱口秀工作手册-11-pitch your idea把一个想法扎进别人脑子里;专业,做足准备,给选择option!
  • vue3 自定义指令 directive
  • 为什么腾讯难以再现《黑神话:悟空》这样的游戏大作?
  • C# WPF燃气报警器记录读取串口工具
  • 【IEEE独立出版 | 往届快至会后2个月检索,刊后1个月检索】2024年第四届电子信息工程与计算机科学国际会议(EIECS 2024)
  • FPGA实现串口升级及MultiBoot(三)FPGA启动加载方式
  • Linux驱动(六):Linux2.6驱动编写之平台设备总线
  • 回溯——11.重新安排行程
  • python+pytest+request 接口自动化测试
  • 《JavaEE进阶》----10.<SpringMVC应用分层:【三层架构】>
  • 【网络】网络通信的传输方式
  • 数据仓库理论知识
  • 容易中、见刊快的6本医学期刊推荐!
  • nnunetv2系列:使用默认的预测类推理2D数据
  • 伺服电机如何计算扭矩——看这一篇就够了
  • 数据库C语言删除修改和输出
  • 插槽slot
  • 交换技术是一种在计算机网络和通信系统中广泛应用的关键技术,它主要通过交换设备(如交换机、路由器等)实现数据的转发和传输
  • 数仓建模:数仓设计中的10个陷阱
  • Vue如何将网页转换成图片或PDF并上传
  • 【引领数据分析革命】TaskWeaver框架全景解读与入门指南!
  • LabVIEW灵活集成与调试的方法
  • 网络药理学:分子对接之二:PDB数据库的使用(已知PDB ID)、PubChem数据库如果没有3D结构
  • JS获取页面中video标签视频的封面和时长
  • LLM大模型学习:AI Agent综述