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语言中实现文件写入操作。记得在写入完成后关闭文件,以释放资源并确保数据写入磁盘。

其他函数的用法和功能如下:

其实文件的读取和写入就是对这些函数的理解和使用,熟悉这些函数的使用方法,就可以很好的进行文件的写入与写出,具体知识也没有多少,重在上机操作,多应用几遍就好了,如果在实操中遇到不懂的地方,欢迎私信我或者在评论区指出

创作不易,还请一键三连

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/461535.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年AI辅助研发:科技创新的引擎

CSND - 个人主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《人工智能》 技术进展 进入2024年&#xff0c;人工智能&#xff08;AI&#xff09;在科技界和工业界的焦点地位更加巩固&#xff0c;其在辅助研发领域的技术进步尤为显著。深度学习技术的突飞猛进使得数据分…

Window API 使用的一些注意事项

文章目录 1、LPCWSTR类型2、LPCTSTR类型3、LPCSTR类型4、LPCTSTR和LPCWSTR区别5、LPCTSTR和LPCSTR、LPCWSTR三者区别6、_T(" ")7、DWORD类型转换为std::wstring类型8、char类型转换为LPCSTR类型9、获取当前时间戳(毫秒)10、std::wstring和LPCSTR区别11、std::wstring…

漫途桥梁结构安全监测方案,护航桥梁安全!

桥梁作为城市生命线的重要组成部分&#xff0c;承载着城市交通、物流输送、应急救援等重要职能。然而&#xff0c;随着我国社会经济的飞速发展&#xff0c;桥梁所承载的交通流量逐年增长&#xff0c;其安全性所面临的挑战亦日益严峻。例如恶劣的外部环境、沉重的荷载以及长期使…

南大通用数据库-Gbase-8a-学习-43-SQL长时间处于Writing to net状态排查

目录 一、问题截图 二、排查思路 1、Gbase8a SQL有几种状态 2、问题导致原因猜想 3、观察服务端&#xff08;集群端&#xff09;网络情况 4、观察客户端网络情况 5、排查客户端程序处理数据慢 5.1、send &#xff08;1&#xff09;声明 &#xff08;2&#xff09;作用…

springboot“期待相遇”图书借阅系统的设计与实现

摘 要 伴随着我国社会的发展&#xff0c;人民生活质量日益提高。于是对系统进行规范而严格是十分有必要的&#xff0c;所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套“期待相遇”图书借阅系统&#xff0c;帮助商家…

TS的el-tree数据处理方式,递归

private async initData() {let res await GetAllOranizationInfo()console.log(res数据, res)//获取递归方法return回来的数据this.treeData this.organData(res, null)console.log(tree数据, this.treeData)} private organData(allData: any[], topparentId: string): Tr…

智慧交通:构建智慧城市的重要一环

随着信息技术的飞速发展&#xff0c;智慧城市已成为现代城市发展的重要方向。作为智慧城市的重要组成部分&#xff0c;智慧交通以其高效、便捷、环保的特性&#xff0c;成为推动城市现代化进程的关键力量。本文将从智慧交通的概念、发展现状、面临挑战以及未来趋势等方面&#…

蓝桥杯单片机快速开发笔记——独立键盘

一、原理分析 二、思维导图 三、示例框架 #include "reg52.h" sbit S7 P3^0; sbit S6 P3^1; sbit S5 P3^2; sbit S4 P3^3; void ScanKeys(){if(S7 0){Delay(500);if(S7 0){while(S7 0);}}if(S6 0){Delay(500);if(S6 0){while(S6 0)…

GaN HEMTs在电力电子应用中的交叉耦合与基板电容分析与建模

来源&#xff1a;Analysis and Modeling of Cross-Coupling and Substrate Capacitances in GaN HEMTs for Power-Electronic Applications&#xff08; TED 17年&#xff09; 摘要 本文提出了一种考虑了基板电容与场板之间交叉耦合效应的场板AlGaN/GaN高电子迁移率晶体管(HE…

TOP-K问题

TOP-K问题&#xff1a;即求数据结合中前K个最大的元素或者最小的元素&#xff0c;一情况下数据量都比较大。 比如&#xff1a;专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 对于Top-K问题&#xff0c;能想到的最简单直接的方式就是排序&#xff0c;但是&#x…

Python-sklearn-diabetes项目实战

目录 1 下载数据集和预处理 1.1 加载/下载数据集 1.2 数据可视化 1.3 数据清洗 1.4 特征工程 1.5 构建特征集和标签集 1.6 拆分训练集和测试集 2 训练模型 2.1 选择算法和确定模型 2.2 训练拟合模型 3 评估并优化模型性能 本文以糖尿病数据集diabetes为基础进行线性…

掌握高级设计原则:Java中的过滤器模式解析与实战演练,构建灵活且可扩展的系统架构

过滤器模式是一种结构型设计模式&#xff0c;它允许开发者使用不同的标准来过滤一组对象&#xff0c;并通过逻辑运算以解耦的方式将它们联系起来。 过滤器模式的核心在于提供了一个处理对象的机制&#xff0c;这个机制可以根据一个或多个标准来决定哪些对象应该被接受、哪些应…

数据指标体系方法—OSM模型

了解 OSM 模型 OSM 模型&#xff0c;全称为 Object-Strategy-Measure 模型。 O 代表业务目标&#xff0c;不仅仅是指公司战略级别的目标&#xff0c;也包含了产品中某个功能的目的&#xff0c;某场活动的目标等。S 代表业务策略&#xff0c;这里指的是要实现 O 需要采用的策略…

【Linux】从零开始认识进程 — 前篇

我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。。——山本耀司 从零开始认识进程 1 认识冯诺依曼体系2 操作系统3 进程3.1 什么是进程&#xff1f;&#xff1f;&#xff1f;3.2 进程管理PCB 3.3 Linux中的进程深入理解 3.4 进程创建总结 送给…

Flink 集群部署模式

文章目录 前言一、会话模式&#xff08;Session Mode&#xff09;二、单作业模式&#xff08;Per-Job Mode&#xff09;三、应用模式&#xff08;Application Mode&#xff09; 前言 Flink支持多种集群部署模式&#xff0c;以满足不同场景和需求。以下是Flink的主要集群部署模…

计算机网络(5)-----网络层

目录 一.网络层的功能和概述 二.转发相关 1.网络层协议 &#xff08;1&#xff09;IP协议 •IP数据报格式&#xff1a; •IP数据报分片&#xff1a; •IP地址&#xff1a; •IP地址的分类&#xff1a; •网络地址转换NAT&#xff1a; •子网划分&#xff1a; •无分…

拼多多获得搜索词统计 API 返回值说明

拼多多获得搜索词统计的API返回值通常包含与搜索词相关的统计数据和信息。 item_search_data-获得搜索词统计获取调用详情链接 pinduoduo.item_search_data 公共参数 响应参数 - 请求示例 url 默认请求参数已经URL编码处理 curl -i "https://api-gw-xxx.cn/pinduoduo/it…

F. Chat Screenshots

思路&#xff1a;拓扑排序&#xff0c;如果存在满足所有截图的顺序&#xff0c;那么这个图中就会存在拓扑排序&#xff0c;这意味着图中不会存在循环。因此&#xff0c;我们的目标就是检查图的非循环性。 代码&#xff1a; int b[200010], vis[200010], edge[200010]; vector&…

云备份项目2

云备份项目 文章目录 云备份项目4. 服务端代码设计4.1 服务端工具类实现4.1.1 文件实用工具类设计4.1.2 Json实用工具类设计 4.2 服务端配置信息模块实现4.2.1 系统配置信息4.2.2 单例文件配置类设计 4.3 服务端数据管理模块实现4.3.1 备份数据类的实现4.3.2 数据管理类的设计 …

关于数据通信知识的补充——第二篇

目录 四.二层交换机 5.实现不同vlan通信的原理 方法一&#xff1a;路由器网关 方法二&#xff1a;单臂路由 方法三&#xff1a;三层交换机 五.三层路由技术 &#xff08;1&#xff09;直连路由 &#xff08;2&#xff09;静态路由 &#xff08;3&#xff09;动态路由 …