C语言中的文件操作

C语言中的文件操作

在这里插入图片描述

1、文件的打开

创建文件指针变量

File* pf;

定义一个指向FILE类型数据的指针变量,可以使pf指向某个文件的文件信息区,通过文件指针变量就能够找到与它关联的文件

(1)文件的打开

使用fopen函数打开文件,使用fclose函数关闭文件

打开函数的使用形式:

FILE* fopen(const char* filename,const char* mode);//第一个参数是文件名,第二个参数是打开的方式

打开的方式有:

在这里插入图片描述

完整的文件打开操作:

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <string.h>
#include <errno.h>
int main() {FILE* pf = fopen("text.txt", "r");//这个文件就和代码在一个路劲下,使用的是相对路径if (pf == NULL) {printf("%s\n", strerror(errno));}//读文件//文件的关闭fclose(pf); pf = NULL;return 0;
}

如果想打开其他位置上的文件就需要加上绝对路径:

比如这里我们想打开桌面上的文件:

FILE* pf = fopen("C:\\Users\\邓欣洋\\Desktop\\text.txt", "r");//但是需要使用转义字符,原本使用一个‘\’,这里就需要两个‘\’
(2)文件的读写
  • 关于一个字符的读,使用的函数为fputc()函数
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <string.h>
#include <errno.h>
int main() {FILE* pf = fopen("text.txt", "w");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}//写文件fputc('g', pf);//写一个字符到文件里面//文件的关闭fclose(pf); pf = NULL;return 0;
}
  • 关于文件的读:

  •   #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <errno.h>int main() {FILE* pf = fopen("text.txt", "r");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}//读文件char c = fgetc(pf);printf("%c\n", c);//读一个字符到文件里面//文件的关闭fclose(pf); pf = NULL;return 0;}
    
  • 写一行数据到文件里面

  •   #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <errno.h>int main() {FILE* pf = fopen("text.txt", "w");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}//写文件fputs("hello world!!!", pf);//这是写一行数据到文件里面,原来有的内容就会被现在的数据覆盖//如果在这里不想销毁之前的内容可以将方式改成a,即//FILE* pf = fopen("text.txt", "a");//文件的关闭fclose(pf); pf = NULL;return 0;}
    
  • 读一行数据,并打印出来读的是什么

  •   #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <errno.h>int main() {FILE* pf = fopen("text.txt", "r");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}//读文件char arr[10];fgets(arr,5,pf);//第一个参数是将文件中的数据读到那个地方里面,第二个参数是读多少个字符,第三个数据是从哪个文件里面读//文件的关闭fclose(pf); pf = NULL;return 0;}
    
  • 格式化写数据到文件里面

  •   #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <errno.h>struct S {char arr[10];int age;float grade;};int main() {struct S s = { "zhangsan",18,98.5 };FILE* pf = fopen("text.txt", "w");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}//写数据fprintf(pf, "%s %d %f", s.arr, s.age, s.grade);//文件的关闭fclose(pf); pf = NULL;return 0;}
    
  • 格式化读数据

  •   #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <errno.h>struct S {char arr[10];int age;float grade;};int main() {struct S s = { 0 };FILE* pf = fopen("text.txt", "r");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}//读数据fscanf(pf, "%s %d %f", &(s.arr), &(s.age), &(s.grade));printf("%s %d %f\n", s.arr, s.age, s.grade);//文件的关闭fclose(pf); pf = NULL;return 0;}
    

以上的函数是针对所有的输入和输出流

接下来的函数只针对文件流,只能写到文件里面,或者从文件里面读数据

(3)fwrite函数

以二进制的形式写进文件中

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <string.h>
#include <errno.h>struct S {char arr[10];int age;float grade;
};
int main() {struct S s = {"zhangsan",20,85};//以二进制的形式写入文件FILE* pf = fopen("text.txt", "wb");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}//以二进制的方式写fwrite(&s, sizeof(struct S), 1, pf);//文件的关闭fclose(pf); pf = NULL;return 0;
}
(4)fread函数

以二进制的形式读数据

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <string.h>
#include <errno.h>struct S {char arr[10];int age;float grade;
};
int main() {struct S s = {0};//以二进制的形式读入文件FILE* pf = fopen("text.txt", "rb");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}//以二进制的方式读fread(&s, sizeof(struct S), 1, pf);//第一个参数是读到哪里去,第二个参数是所读数据的大小,第三个参数是要读多少个这样的数据,第四个参数是从哪里读printf("%s %d %f\n", s.arr, s.age, s.grade);//文件的关闭fclose(pf); pf = NULL;return 0;
}
(5)sprintf和sscanf函数

sscanf是从一个字符串中转化成一个格式化的数据,sprintf是把一个格式化的数据转化成字符串

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <string.h>
#include <errno.h>struct S {char arr[10];int age;float grade;
};
int main() {struct S s = {"zhangsan",20,97};struct S tmp = { 0 };char buf[100] = { 0 };//把s中的格式化的数据转化成字符串bufsprintf(buf, "%s %d %f", s.arr, s.age, s.grade);//这个buf里面就是"zhangsan 20 97.00000"是一个字符串//从字符串buf中获取一个格式化的数据到tmp中;sscanf(buf, "%s %d %f", tmp.arr, &(tmp.age), &(tmp.grade));return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

白盒测试-条件覆盖

​ 条件覆盖是指运行代码进行测试时&#xff0c;程序中所有判断语句中的条件取值为真值为假的情况都被覆盖到&#xff0c;即每个判断语句的所有条件取真值和假值的情况都至少被经历过一次。 ​ 条件覆盖率的计算方法为&#xff1a;测试时覆盖到的条件语句真、假情况的总数 / 程…

LLM(一):大语言模型

自2022年&#xff0c;ChatGPT发布之后&#xff0c;大语言模型&#xff08;Large Language Model&#xff09;&#xff0c;简称LLM掀起了一波狂潮。作为学习理解LLM的开始&#xff0c;先来整体的理解一下大语言模型 一&#xff0c;发展历史 大语言模型的发展历史可以追溯到早期…

【讲解下目标追踪】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

每日一题——环形链表的约瑟夫问题

题目链接&#xff1a; 环形链表的约瑟夫问题_牛客题霸_牛客网 题目&#xff1a; 描述 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数&#xff0c;报到 m 的人离开。 下一个人继续从 1 开始报数。 n-1 轮结束以后&#xff0c;只剩下一个人&#xff0c;问最后留…

idm线程越多越好吗 idm线程数多少合适 IDM百度云下载 IDM下载器如何修改线程数

IDM&#xff08;Internet Download Manager&#xff09;是一款流行的网络下载器&#xff0c;它支持多线程下载&#xff0c;这意味着它可以同时建立多个连接来下载文件的不同部分&#xff0c;从而提高下载速度。我们在使用IDM的时候总是有很多疑问&#xff0c;今天我们学习IDM线…

【形而上学】数据治理之元数据——用数据的数据管理数据

【形而上学】数据治理之元数据——用数据的数据管理数据 一、都柏林核心元数据元素集二、元数据2.1 什么是元数据2.2 元数据类型2.3 实现元数据的技术 三、元数据相关标准 一、都柏林核心元数据元素集 1995年3月&#xff0c;NCSA与OCLC共同在俄亥俄州都柏林市举行了一次仅有受邀…

【智能优化算法详解】粒子群算法PSO量子粒子群算法QPSO

1.粒子群算法PSO 博主言简意赅总结-算法思想&#xff1a;大方向下个体自学习探索群体交流共享 对比适应度找到最优点 背景 粒子群算法&#xff0c;也称粒子群优化算法或鸟群觅食算法&#xff08;Particle Swarm Optimization&#xff09;&#xff0c; 缩写为 PSO。粒子群…

Linux:文本编辑器 - vim

Linux&#xff1a;文本编辑器 - vim vim基本操作普通模式模式切换移动光标复制粘贴删除替换撤销 底行模式行号查找 vim基本操作 Vim(Vi Improved)是一款功能强大的文本编辑器&#xff0c;是Unix/Linux系统中广泛使用的编辑器之一。它源于上世纪70年代开发的Vi编辑器&#xff0…

C#学习笔记9:winform上位机与西门子PLC网口通信_上篇

今日继续我的C#学习笔记&#xff0c;今日开始学习打开使用千兆网口来进行与西门子PLC的通信&#xff1a; 文章提供整体代码、解释、测试效果截图、整体测试工程下载&#xff1a; 主要包含的知识有&#xff1a;下载NuGet程序包、西门子PLC及通信协议、搭建虚拟的S7通信仿真环境…

为了进阿里拿Offer,逼得我两个月吃透了这些Java高级面试题解析,终于上岸

JVM与调优 21 题及答案解析 JVM的内存结构。 JVM方法栈的工作过程&#xff0c;方法栈和本地方法栈有什么区别。 JVM的栈中引用如何和堆中的对象产生关联。 可以了解一下逃逸分析技术。 gc的常见算法 CMS以及G1的垃圾回收过程&#xff0c;CMS的各个阶段哪两个是Stop the wo…

51.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色选择的模拟与截取

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a;如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&…

制造业、能源等传统行业进行数字化转型时要注意哪些问题?

制造业、能源等传统行业在进行数字化转型时需要注意以下几个关键问题&#xff1a; 1、明确转型目标和战略规划&#xff1a;企业需要根据自身的业务特点、市场需求和长远发展目标&#xff0c;制定清晰的数字化转型战略。包括确定转型的重点领域、预期成果、时间表和资源投入。 …

阿里云云效CI/CD配置

1.NODEJS项目流水线配置(vue举例) nodejs构建配置 官方教程 注意:下图的dist是vue项目打包目录名称,根据实际名称配置 # input your command here cnpm cache clean --force cnpm install cnpm run build 主机部署配置 rm -rf /home/vipcardmall/frontend/ mkdir -p /home/…

计算分数和-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第48讲。 计算分数和&#…

3 突破编程_前端_SVG(rect 矩形)

1 rect 元素的基本属性和用法 在SVG中&#xff0c;<rect> 元素用于创建矩形。 <rect> 元素有一些基本的属性&#xff0c;可以用来定义矩形的形状、位置、颜色等。以下是这些属性的详细解释&#xff1a; x 和 y &#xff1a;这两个属性定义矩形左上角的位置。 x …

[dvwa] sql injection(Blind)

blind 0x01 low 1’ and length(version()) 6 # syntax: substr(string , from<start from 1>, cut length) 1’ and substr(version(),1,1) ‘5’ # 1’ and substr(version(),2,1) ‘.’ # 1’ and substr(version(),3,1) ‘7’ # 1’ and substr(version(),4,…

leetcode 322

leetcode 322 题目 例子 思路 记忆化搜索&#xff0c;使用数组&#xff0c;记录val的最少硬币数量&#xff1b; 递归加bfs; 代码实现 #include <vector> #include <climits> // For INT_MAX #include <algorithm> // For minclass Solution { public:int…

C#下Httpclient post请求获取令牌

1.postman测试ok 2.C#代码 public static async Task<string> testGetToken(string URL, string param){string responseBody "eee";//using (var clientHandler new HttpClientHandler()){ var handler new HttpClientHandler();handler.ServerCertificat…

响应实践!赛宁网安亮相第二届全国先进技术成果转化大会

4月8日&#xff0c;第二届全国先进技术成果转化大会&#xff08;以下简称“大会”&#xff09;在苏州隆重举行。大会由江苏省国防科学技术工业办公室、苏州市人民政府、先进技术成果长三角转化中心主办。赛宁网安作为全球一流数字孪生靶场服务商&#xff0c;携数字孪生靶场、网…

element-ui的按需引入报错解决:MoudleBuildFailed,完整引入和按需引入

官网&#xff1a; Element - The worlds most popular Vue UI framework 1.完整引入 &#xff08;1&#xff09;下载&#xff1a; npm i element-ui -S &#xff08;2&#xff09;引入&#xff1a; 在 main.js 中写入以下内容&#xff1a; import Vue from vue; impor…