C语言葵花宝典之——文件操作
前言:
在之前的学习中,我们所写的C语言程序总是在运行结束之后,就会自动销毁,那如果我们想将一个结果进行长期存储应该如何操作呢?这时候就需要我们用文件来操作。
目录
1、什么是文件?
1.1 程序文件
1.2 数据文件
1.3 文件名
2、二进制文件和文本文件
2.1 文本文件:
2.2 二进制文件:
3、文件的打开和关闭
3.1 fopen() 函数
编辑
3.2 fprintf() 函数
3.3 fputc() 函数
1、什么是文件?
文件就是我们硬盘中存在的文件,例如C盘、D盘中的内容
我们常讲的文件有程序文件和数据文件两种
1.1 程序文件
程序文件包括源程序文件 (后缀为 .c )、目标文件(后缀为 .obj )、可执行程序(后缀为 .exe )这三种,这不是我们今天要讲的重点
1.2 数据文件
文件的内容除了是程序,还可能是程序运行的数据,比如可能是程序结果输入的那个文件,或者是从一个文件中读取内容。
1.3 文件名
文件名实际上也就是文件表示,是用来帮助用户找到指定文件的
例如:c:\ add \ test.txt

2、二进制文件和文本文件
二进制文件和文本文件是计算机中常见的两种文件类型,它们在存储和处理方式上有所不同。
2.1 文本文件:
- 文本文件是以人类可读的字符组成的文件,通常使用ASCII或Unicode编码。
- 文本文件包含的是文本数据,如文本文档、代码文件等。
- 文本文件可以直接在文本编辑器中打开并查看,易于理解和编辑。
- 换行符在文本文件中通常以特定的字符表示(如"\n")。
- 文本文件的大小通常以字符数或字节数来衡量。
2.2 二进制文件:
- 二进制文件是以计算机可识别的二进制数据组成的文件,可以包含任意数据类型,如图像、音频、视频等。
- 二进制文件不是以文本形式存储,无法直接在文本编辑器中打开查看,需要特定的程序来解析和处理。
- 二进制文件的内容是以字节为单位存储的,不具有人类可读性。
- 换行符在二进制文件中没有特定表示方式,可能会以特定的字节序列表示。
- 二进制文件的大小通常以字节数来衡量。
简单来说,文本文件我们一般是直接可读的,而二进制文件则一般需要经过操作后才可读
下面给出一个二进制写入的程序:
#include<stdio.h>
int main()
{int a = 10000;FILE* pf = fopen("test.txt", "wb");fwrite(&a, 4, 1, pf);//二进制的形式写入文件中fclose(pf);pf = NULL;
}
运行后:

你会发现我们存进去的a的值是以一种我们看不懂的方式存储的,这实际上就是二进制存储
3、文件的打开和关闭
文件在读写之前要先打开文件,在使用结束后再关闭文件
一般我们是通过一个FILE*指针变量来指向该文件,FILE*指针是再打开一个文件的时候必须创建的,这就相当于文件的指针,我们可以通过创建一个这样的变量指向指针
规定中,我们用fopen来打开文件,用fclose来关闭文件
//打开文件
FILE* fopen(const char* filename, const char* mode);//关闭文件
int floce(FILE* stream);
mode表示文件的打开模式,主要有以下几种模式:

文件写入实例:
3.1 fopen() 函数
fopen() 函数用于打开一个文件,并返回一个文件指针,以便后续的读写操作。该函数的原型如下:
FILE *fopen(const char *filename, const char *mode);
其中,filename是要打开的文件名,mode指定打开文件的模式(如"r"表示只读,"w"表示只写,"a"表示追加等)。
应用实例:
#include <stdio.h>int main() {FILE *fp;fp = fopen("example.txt", "w");if (fp == NULL) {printf("文件打开失败\\n");return 1;}fprintf(fp, "Hello, World!\\n");fclose(fp);return 0;
}
3.2 fprintf() 函数
fprintf() 函数用于将格式化的数据写入文件。其原型如下:
int fprintf(FILE *stream, const char *format, ...);
其中,stream是文件指针,format是格式化字符串,类似于printf()函数的用法。
应用实例:
#include <stdio.h>int main() {FILE *fp;fp = fopen("example.txt", "w");if (fp == NULL) {printf("文件打开失败\\n");return 1;}int num = 42;fprintf(fp, "The answer is: %d\\n", num);fclose(fp);return 0;
}
3.3 fputc() 函数
fputc() 函数用于将一个字符写入文件。其原型如下:
int fputc(int character, FILE *stream);
其中,character是要写入的字符,stream是文件指针。
应用实例:
#include <stdio.h>int main() {FILE *fp;fp = fopen("example.txt", "w");if (fp == NULL) {printf("文件打开失败\\n");return 1;}fputc('A', fp);fclose(fp);return 0;
}
通过使用这些文件写入函数,我们可以轻松地在C语言中实现文件写入操作。记得在写入完成后关闭文件,以释放资源并确保数据写入磁盘。
其他函数的用法和功能如下:

其实文件的读取和写入就是对这些函数的理解和使用,熟悉这些函数的使用方法,就可以很好的进行文件的写入与写出,具体知识也没有多少,重在上机操作,多应用几遍就好了,如果在实操中遇到不懂的地方,欢迎私信我或者在评论区指出
创作不易,还请一键三连
相关文章:
C语言葵花宝典之——文件操作
前言: 在之前的学习中,我们所写的C语言程序总是在运行结束之后,就会自动销毁,那如果我们想将一个结果进行长期存储应该如何操作呢?这时候就需要我们用文件来操作。 目录 1、什么是文件? 1.1 程序文件 1.2…...
SSM框架,MyBatis-Plus的学习(下)
条件构造器 使用MyBatis-Plus的条件构造器,可以构建灵活高效的查询条件,可以通过链式调用来组合多个条件。 条件构造器的继承结构 Wrapper : 条件构造抽象类,最顶端父类 AbstractWrapper : 用于查询条件封装…...
边缘计算网关的工作原理及其在工业领域的应用价值-天拓四方
随着物联网技术的快速发展,物联网时代已经悄然来临。在这个时代,数以亿计的设备相互连接,共享数据,共同构建智慧的世界。边缘计算网关通过将计算能力和数据存储推向网络的边缘,实现了对海量数据的实时处理,…...
下载指定版本的pytorch
下载网址:https://download.pytorch.org/whl/torch_stable.html 参考博客网址:https://blog.csdn.net/wusuoweiieq/article/details/132773977...
STL:List从0到1
🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN&…...
利用高分五号02星高光谱数据进行地物识别
高分五号02星搭载了一台60公里幅宽、330谱段、30米分辨率的可见短波红外高光谱相机(AHSI),可见近红外(400~1000nm)和短波红外光谱(1000~2500nm)分辨率分别达到5纳米和10纳米。单看参数性能优越&…...
前端如何识别上传的二维码---jsQR
npm npm i -d jsqrhtml <el-button click"$refs.input.click()">识别</el-button> <input type"file" style"display: none" id"input" input"upload">js import jsQR from "jsqr";decodeQR…...
flink1.18.0 自定义函数 接收row类型的参数
比如sql中某字段类型 array<row<f1 string,f2 string,f3 string,f4 bigint>> 现在需要编写 tableFunction 需要接受的参数如上 解决方案 用户定义函数|阿帕奇弗林克 --- User-defined Functions | Apache Flink...
JDK8和JDK11在Ubuntu18上切换(解决nvvp启动报错)
本文主要介绍JDK8和JDK11在Ubuntu18上切换,以供读者能够理解该技术的定义、原理、应用。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:计算机杂记 🎀CSDN主页 发狂的小花 🌄人…...
基于eleiment-plus的表格select控件
控件不是我写的,来源于scui,但在使用中遇到了一些问题,希望能把过程记录下来,同时把这个问题修复掉。 在使用的时候对控件进行二级封装,比如我的一个商品组件,再很多地方可以用到,于是 <template>&l…...
「❤️万文总结 时光回忆录❤️」那年,我在北京邮电大学计算机学院求学的日子
文章目录 关于我 | About Me梦绕西土城,邮情涌流 | Dreams and Connections in Haidian 北邮求学记 | My Days at BUPT岁月如歌,追忆往昔 | Reminiscing the Fleeting Years新篇章:班级与环境 | New Class, New Surroundings高压与挑战&#…...
【四 (1)数据可视化之如何选用正确的图表】
目录 文章导航一、数据分析中可视化的作用1、揭示数据关联和模式2、支持数据分析和决策3、提升沟通和共享效果4、强调关键信息和发现5、增强故事叙述和记忆效果6、有效增强数据交互性数据7、复杂信息易理解8、数据多维度显示 二、如何选用合适的图表1、简洁性避免使用过于复杂或…...
PHP<=7.4.21 Development Server源码泄露漏洞 例题
打开题目 dirsearch扫描发现存在shell.php 非预期解 访问shell.php,往下翻直接就看到了flag.. 正常解法 访问shell.php 看见php的版本是7.3.33 我们知道 PHP<7.4.21时通过php -S开起的WEB服务器存在源码泄露漏洞,可以将PHP文件作为静态文件直接输…...
大语言模型RAG-技术概览 (一)
大语言模型RAG-技术概览 (一) 一 RAG概览 检索增强生成(Retrieval-AugmentedGeneration, RAG)。即大模型在回答问题或生成问题时会先从大量的文档中检索相关的信息,然后基于这些信息进行回答。RAG很好的弥补了传统搜索方法和大模型两类技术…...
【嵌入式DIY实例】-DIY锂电池电压检测表
DIY锂电池电压检测表 文章目录 DIY锂电池电压检测表1、直流电压检测传感器介绍2、硬件准备3、代码实现4、OLED显示在电子应用中,通常需要使用到电池,电源管理是必不可少的部分。本文将详细介绍如何使用一个0-25V的直流电压传感器来检测锂电池的电压。 1、直流电压检测传感器介…...
生成baidu.com域名的私有证书:Linux系统命令示例
在Linux系统上生成一个针对xzyxdev.prec-tech.com域名的私有证书(通常指的是自签名证书),你可以使用openssl工具。以下是一个简单的步骤和命令示例来生成这样的证书: 生成私钥 首先,你需要生成一个私钥。这通常是一个…...
小程序学习4 mock
services/home.js import { config, cdnBase } from ../../config/index;/** 获取首页数据 */ function mockFetchHome() {const { delay } require(../_utils/delay);const { genSwiperImageList } require(../../model/swiper);return delay().then(() > {return {swip…...
Unity3D MMORPG角色的UI血条管理详解
前言 在Unity3D游戏开发中,MMORPG(Massively Multiplayer Online Role-Playing Game)游戏是一种非常流行的游戏类型。在这种类型的游戏中,玩家通常可以选择不同的角色来进行游戏,而角色的血条管理是游戏中非常重要的一…...
【python】爬取杭州市二手房销售数据做数据分析【附源码】
一、背景 在数据分析和市场调研中,获取房地产数据是至关重要的一环。本文介绍了如何利用 Python 中的 requests、lxml 库以及 pandas 库,结合 XPath 解析网页信息,实现对链家网二手房销售数据的爬取,并将数据导出为 Excel 文件的过…...
Day34:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法
目录 Java-反射-Class对象类获取 Java-反射-Field成员变量类获取 Java-反射-Method成员方法类获取 Java-反射-Constructor构造方法类获取 Java-反射-不安全命令执行&反序列化链构造 思维导图 Java知识点 功能:数据库操作,文件操作,…...
Llama-3.2V-11B-cot效果展示:模型对‘正常但可疑’图像模式的异常检测能力
Llama-3.2V-11B-cot效果展示:模型对正常但可疑图像模式的异常检测能力 1. 模型能力概览 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具,专门针对双卡4090环境进行了深度优化。该模型具备以下核心能力…...
万象视界灵坛代码实例:批量处理百张图像并导出CSV格式语义匹配报告
万象视界灵坛代码实例:批量处理百张图像并导出CSV格式语义匹配报告 1. 项目概述与核心价值 万象视界灵坛是一款基于OpenAI CLIP模型的高级多模态智能感知平台,它将复杂的图像语义分析转化为直观的交互体验。不同于传统视觉识别工具,该平台采…...
基于MATLAB的悬臂梁前3阶固有频率和振型求解(假设模态法、解析法、瑞利里兹法)
基于matlab的求解悬臂梁前3阶固有频率和振型 基于matlab的求解悬臂梁前3阶固有频率和振型,采用的方法分别是(假设模态法,解析法,瑞利里兹法) 程序已调通,可直接运行悬臂梁的振动分析总带着点工程师的浪漫——既要数学的…...
OpenClaw飞书机器人集成:千问3.5-9B对话触发详解
OpenClaw飞书机器人集成:千问3.5-9B对话触发详解 1. 为什么选择飞书OpenClaw的私有化方案 去年团队内部开始尝试用AI助手处理日常事务时,我们面临一个典型困境:公有云机器人虽然开箱即用,但所有对话记录和文件都要经过第三方服务…...
Slim模板终极部署指南:从开发到生产的完整流程
Slim模板终极部署指南:从开发到生产的完整流程 【免费下载链接】slim Slim is a template language whose goal is to reduce the syntax to the essential parts without becoming cryptic. 项目地址: https://gitcode.com/gh_mirrors/sli/slim Slim模板语言…...
MCP Agent Graph: 基于上下文工程的多智能体系统构建指南
1. 引言: 从单一模型到多智能体协作 1.1 大语言模型的能力边界 大语言模型(LLM)的发展经历了从简单文本生成到复杂推理的演进过程。早期的应用场景主要集中在问答、翻译、摘要等相对独立的任务上,模型作为一个无状态的推理引擎,接收输入并产生输出。然…...
OpenClaw自动化周报生成:Qwen2.5-VL-7B图文混合排版实战
OpenClaw自动化周报生成:Qwen2.5-VL-7B图文混合排版实战 1. 为什么需要自动化周报 每周五下午3点,我的日历总会准时弹出"写周报"的提醒。作为一个小团队的Tech Lead,我需要汇总Jira任务进展、Git代码提交、会议纪要等零散信息&am…...
为什么2026年还有企业在用Excel算工资?新工具提升HR工作效率
HR工资系统软件是帮助企业实现薪酬自动化核算、个税申报、社保公积金管理的数字化工具。现代工资系统通常集成考勤、绩效、人事等模块,支持复杂薪酬规则配置,将HR从每月耗时数天的手工算薪中解放出来,准确率提升至99.9%以上。 为什么2026年还…...
医疗AI推理可视化卡顿难题(实时渲染延迟>120ms?)——三甲医院PACS系统C++底层优化全链路拆解
第一章:医疗AI推理可视化卡顿难题的临床影响与性能基线定义在放射科、病理科及急诊超声等实时决策场景中,AI模型输出热力图、分割掩码或病灶定位框后,若前端渲染延迟超过300ms,将直接干扰医师对动态影像序列(如心脏搏动…...
状态机中的人物状态
一,人物惯性移动using System.Collections; using System.Collections.Generic; using UnityEngine;public class CharMove3 : MonoBehaviour {public Transform charTrans; //角色坐标public Vector3 currentVelocity; //当前速度public float maxSpeed; //最大速率…...

