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,关注后即可获取最新文章推送

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

相关推荐
lifallen1 小时前
深入解析RocksDB的MVCC和LSM Tree level
大数据·数据结构·数据库·c++·lsm-tree·lsm tree
君鼎1 小时前
Effective C++ 条款18:让接口容易被正确使用,不易被误用
c++
whxnchy1 小时前
C++刷题 - 7.27
开发语言·c++
拾光拾趣录2 小时前
ES6到HTTPS全链路连环拷问,99%人第3题就翻车?
前端·面试
一只叫煤球的猫2 小时前
被架构师怼了三次,小明终于懂了接口幂等设计
后端·spring·性能优化
白日梦想家-K2 小时前
题单【模拟与高精度】
开发语言·c++·算法
岁忧2 小时前
(LeetCode 面试经典 150 题) 138. 随机链表的复制 (哈希表)
java·c++·leetcode·链表·面试·go
鹦鹉0072 小时前
IO流中的字节流
java·开发语言·后端
君鼎2 小时前
Effective C++ 条款17:以独立语句将newed对象置入智能指针
c++
极客BIM工作室3 小时前
深入理解C++中的Lazy Evaluation:延迟计算的艺术
开发语言·c++