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

C 语言文件读写初探:打开数据之门 [特殊字符]

 


引言:为什么需要文件读写?

在学习 C 语言的过程中,我们经常使用 printf 来输出信息到屏幕,用 scanf 从键盘读取输入。但这有一个问题:一旦程序运行结束,所有的数据都会丢失!想象一下,我们写了一个通讯录程序,每次启动都要重新输入朋友信息,那也太不方便了!

文件读写就是解决这个问题的“钥匙”🔑。它允许我们的程序将数据“写”入硬盘上的文件(持久化),并在下次运行时将数据“读”出来(加载),这样数据就能长期保存啦!

认识文件操作的“三步走”

在 C 语言中进行文件操作,无论是读还是写,都有一个固定的、像“仪式”一样的流程,只要记住这三步,文件操作就成功了一大半:

  1. 打开文件(Open):告诉程序你要操作哪个文件,以及你打算“干什么”(是读取、写入还是追加)。

  2. 读写文件(Read/Write):真正地将数据写入文件或从文件中读取数据。

  3. 关闭文件(Close):操作完成后,一定要关闭文件,释放系统资源。这就像使用完共享的工具后要归还一样重要!

第一步:FILE *fopen()

在 C 语言中,文件操作的核心是一个特殊的类型:FILE *(文件指针)。你可以把它想象成一个“文件管理员”的身份卡,程序通过它来和文件进行交流。

使用 fopen() 函数来打开文件,它需要两个两个关键信息:文件名模式

#include <stdio.h>int main() {// 声明一个文件管理员身份卡FILE *filePointer;// 尝试打开一个名为 "mydata.txt" 的文件,模式是 "w" (写入)filePointer = fopen("mydata.txt", "w");// 检查文件是否成功打开if (filePointer == NULL) {printf("文件打开失败了!😭\n");} else {printf("文件打开成功!可以开始写入了!🥳\n");}// 操作完成后,一定要记得关闭!// fclose(filePointer);return 0;
}

常用的文件模式有:

  • "w"写入(Write)。如果文件不存在就创建,如果文件存在,会清空原有内容

  • "r"读取(Read)。文件必须存在,否则打开会失败。

  • "a"追加(Append)。如果文件不存在就创建,如果文件存在,会在文件末尾添加新内容,不会清空原有内容

第二步:fprintf() 写入数据实践

有了文件管理员(FILE *),我们就可以使用 fprintf() 函数来向文件写入数据了。它和我们熟悉的 printf() 非常像,只是多了一个参数:要写入的那个文件管理员身份卡!

#include <stdio.h>int main() {FILE *filePointer = fopen("mydata.txt", "w");if (filePointer != NULL) {// 使用 fprintf 写入一行文本到文件中fprintf(filePointer, "Hello C 语言世界!\n");// 写入一个数字和一些变量int year = 2025;fprintf(filePointer, "这是我学习 C 语言的第 %d 年。\n", year);printf("数据已经写入到 mydata.txt 文件中啦!🎉\n");// 第三步:操作完成,关闭文件!fclose(filePointer);} else {printf("文件操作失败,没能打开文件。😢\n");}return 0;
}

运行完这段程序后,您可以在程序所在的文件夹里找到一个名为 mydata.txt 的文件,打开它,就能看到程序写入的内容了!

第三步:fscanf() 读取数据实践

写入容易,读取也很重要!我们使用 fscanf() 函数来从文件中读取数据。它也和 scanf() 很像,同样是多了一个文件管理员身份卡作为第一个参数。

假设 mydata.txt 文件的内容是:

Hello C 语言世界!
这是我学习 C 语言的第 2025 年。

我们要读取其中的年份:

#include <stdio.h>int main() {// 使用 "r" 模式打开文件进行读取FILE *filePointer = fopen("mydata.txt", "r");int yearFromFile = 0;if (filePointer != NULL) {// 跳过第一行,简单读取第二个数字(年份)// 实际操作中,可能需要更复杂的逻辑来定位数据// 尝试从文件中读取一个字符串,然后读取一个数字// 注意:fscanf 会尝试匹配文件中的内容和格式串fscanf(filePointer, "Hello C 语言世界!\n这是我学习 C 语言的第 %d 年。", &yearFromFile);printf("成功从文件中读取到的年份是:%d\n", yearFromFile);// 操作完成,关闭文件!fclose(filePointer);} else {printf("文件操作失败,读取文件找不到或无法打开。😥\n");}return 0;
}

初学者的专业思考与总结

文件读写看似只是几个函数调用,但背后体现了程序设计中持久化资源管理的专业思想:

  1. 错误检查:永远要检查 fopen() 的返回值是否为 NULL。这是专业程序员的习惯,能让程序更加健壮,避免因为文件不存在而崩溃。

  2. 及时关闭:忘记 fclose() 是初学者常犯的错误。它会导致数据丢失、文件被占用等问题。记住:打开的文件就像借来的工具,用完必须马上归还

 

 

http://www.dtcms.com/a/598998.html

相关文章:

  • AI Agent 从入门到精通:概念、架构与实战应用
  • 官方网站优化价格免费网站模板 html
  • 免费建网站哪个好陕西网络推广网站
  • PHP中对于(并发/并行)相关概念
  • 江西网站做的好的企业移动端网站没有icp
  • 建设工程报建备案网站dedecms源码下载
  • 金富通青岛建设工程有限公司网站网站开发工程师月薪平均
  • Linux DNS域名解析服务器练习
  • 网站开发可选择方案有哪些网站开发网页设计js
  • Linux:内核地址随机化(Kaslr)
  • 百度怎么制作网站教程做瞹瞹网站
  • 金科科技 做网站作图神器
  • 顺德手机网站设计信息最牛的网站建
  • 企业网站seo数据做网站维护学什么编程语言
  • Linux下的项目自动化构建-make\makefile详解
  • 闵行区网站开发网站开发总体设计
  • 氧os哪个网站做的最好杭州互联网企业
  • 开课吧前端面试训练营
  • 宜春网站开发可以做c语言任务的网站
  • 青岛网站权重提升为什么不建议去外包公司
  • C#8、有哪些访问修饰符
  • 西安 h5网站建设ui培训完找工作没人要
  • 做外汇需要了解的网站中国企业500强全部名单
  • php后台网站开发企业宣传报道模板范文
  • 建站公司新闻资讯做自己的网站不是免费的
  • unique_ptr和shared_ptr的引用计数机制有何不同?
  • 用c# 制作一个扑克牌小游戏
  • 买了域名如何做网站南昌有哪些做网站的公司
  • 京东商品详情接口深度解析:从反爬绕过到数据结构化重构
  • 微网站制作电话做的网站被注销