C 语言文件处理全攻略:创建、写入、追加操作解析

C 语言中的文件处理

在 C 语言中,您可以通过声明类型为 FILE 的指针,并使用 fopen() 函数来创建、打开、读取和写入文件:

c 复制代码
FILE *fptr;
fptr = fopen(filename, mode);

FILE 基本上是一个数据类型,我们需要创建一个指针变量来使用它 (fptr)。现在,这行代码并不重要。它只是在处理文件时需要的东西。

要实际打开文件,请使用 fopen() 函数,它接受两个参数:

参数 描述
filename 要打开的实际文件的名称,例如 filename.txt
mode 一个表示您想对文件做什么(读取、写入或追加)的单个字符:
w 写入文件
a 将新数据追加到文件
r 从文件中读取

创建文件

要创建文件,可以在 fopen() 函数中使用 w 模式。

w 模式用于写入文件。但是,如果文件不存在,它将为您创建一个文件:

c 复制代码
FILE *fptr;

// 创建一个文件
fptr = fopen("filename.txt", "w");

// 关闭文件
fclose(fptr);

注意:如果未指定其他信息,文件将与您的其他 C 文件位于同一目录中。

在我们的电脑上,它看起来像这样:

运行示例 >>

提示:如果您想在特定文件夹中创建文件,只需提供绝对路径:

c 复制代码
fptr = fopen("C:\directoryname\filename.txt", "w");

关闭文件

您是否在上面的示例中注意到了 fclose() 函数

当我们完成后,它将关闭文件

它被认为是良好的实践,因为它可以确保:

  • 更改已正确保存
  • 其他程序可以使用该文件(如果您愿意)
  • 清理不必要的内存空间

C 语言中的文件写入

w 模式表示文件已打开用于写入。要将内容插入其中,可以使用 fprintf() 函数,并添加指针变量 (我们示例中的 fptr) 和一些文本:

c 复制代码
FILE *fptr;

// 以写入模式打开文件
fptr = fopen("filename.txt", "w");

// 将一些文本写入文件
fprintf(fptr, "Some text");

// 关闭文件
fclose(fptr);

注意:如果您写入一个已经存在的文件,则旧内容将被删除,并插入新内容。这一点很重要,因为您可能会意外擦除现有内容。

例如:

c 复制代码
fprintf(fptr, "Hello World!");

因此,当我们在计算机上打开文件时,它显示 "Hello World!" 而不是 "Some text"

将内容追加到文件

如果您想在不删除旧内容的情况下将内容添加到文件,可以使用 a 模式。

a 模式将内容追加到文件末尾:

c 复制代码
FILE *fptr;

// 以追加模式打开文件
fptr = fopen("filename.txt", "a");

// 将一些文本追加到文件
fprintf(fptr, "\nHi everybody!");

// 关闭文件
fclose(fptr);

因此,当我们在计算机上打开文件时,它看起来像这样:

arduino 复制代码
Some text
Hi everybody!

注意:当使用 a 模式时,fprintf() 函数不会添加新行。如果您希望在追加的内容之前添加新行,则需要在 fprintf() 函数中手动添加它,如下所示:

c 复制代码
fprintf(fptr, "\n%s", "Hi everybody!");

这将在追加文本之前添加一个新行。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关推荐
梓䈑4 小时前
【算法题攻略】BFS 解决FloodFill 算法、最短路问题、多源BFS 和 拓扑排序
c++·算法·宽度优先
码兄科技8 小时前
实战:基于Spring Boot + UniApp的地理信息小程序开发
spring boot·后端·uni-app
程序喵大人8 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
腾讯云云开发9 小时前
腾讯云 CloudBase 登上 WAIC:我们为 Agent 重新设计了云的生产线
后端
星栈9 小时前
从装一堆工具到看懂 Node 工程化思维:我的项目复盘记录
后端·node.js
触底反弹10 小时前
🚀 从 DOM0 级到 React 合成事件:前端事件监听的 20 年演进史
前端·react.js·面试
65岁退休Coder10 小时前
LangChain v1.3.4 笔记 - 05 Agent 上下文记忆
后端
kyriewen10 小时前
我给前端项目的接口请求套了6层保护——才发现以前一直在裸奔
前端·javascript·面试
颜酱10 小时前
04 | 召回前置准备:搭好召回所需的四个数据库
前端·人工智能·后端
wdfk_prog10 小时前
嵌入式面试真题第 15 题:不可恢复异常后的通用崩溃快照、调用栈保存与离线分析架构
linux·开发语言·面试·架构