文件操作函数

目录

前言

一、顺序读写函数

1、fgetc 和 fputc

2、fgets 和 fputs

3、fprintf 和 fscanf

4、sscanf 和 sprintf

5、fwrite 和 fread

二、随机读写函数

1、fseek

2、ftell

3、rewind


前言

本章我们学习一下文件操作相关的各种函数

一、顺序读写函数

1、fgetc 和 fputc

 当成功读取字符的时候,返回的是该字符的ASCII码值;若读取失败或遇到文件末尾,则返回EOF(-1)

举例:

第一个参数填的是要输入的字符,返回值是该字符的ASCII码值

举例:

可以用循环来多次输出

2、fgets 和 fputs

第一个参数填的是被用于存放字符串的空间的地址,第二个代表取出几个元素,我们要留一个位置给\0,故最多读取(num - 1)个字符元素到 str 指向的位置,若位置充裕则会把字符串末尾自带的 \0 也读进去,返回的是目标位置的地址

举例:

int main()
{//1. 打开文件FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件char arr[20] = {0};while (fgets(arr, 20, pf) != NULL){printf("%s", arr);}//2. 关闭文件fclose(pf);pf = NULL;return 0;
}

第一个参数是要填的字符串的首元素地址,若成功放入则返回一个非负值

举例:

	int main()
{//1. 打开文件FILE*pf = fopen("test.txt", "w");if (pf == NULL){perror("fopen");return 1;}//写文件fputs("hello world\n", pf);fputs("hello bit", pf);//2. 关闭文件fclose(pf);pf = NULL;return 0;
}

3、fprintf 和 fscanf

把数据以格式化的形式打印在指定的输出流上

和 printf 相比参数方面只是多了一个文件流指针,printf 是将数据输出到屏幕上,fprintf 就是把数据输出到指定流里面

从指定的输出流上读取格式化的数据

和 scanf 相比参数方面只是多了一个文件流指针,scanf 是从键盘上输入数据,fscanf 就是从指定流上输入数据

举例:

struct S
{char name[20];int age;float score;
};
int main()
{char buf[200] = { 0 };struct S s = { "张三", 20, 65.5f };sprintf(buf, "%s %d %f", s.name, s.age, s.score);printf("1以字符串的形式: %s\n", buf);//1struct S t = {0};sscanf(buf, "%s %d %f", t.name, &(t.age), &(t.score));printf("2按照格式打印  : %s %d %f\n", t.name, t.age, t.score);//2return 0;
}

 

4、sscanf 和 sprintf

把字符串转化成格式化的数据

  

把格式化的数据转换成字符串

举例:

struct S
{char name[20];int age;float score;
};int main()
{char buf[200] = { 0 };struct S s = { "张三", 20, 65.5f };sprintf(buf, "%s %d %f", s.name, s.age, s.score);printf("1以字符串的形式: %s\n", buf);//1struct S t = {0};sscanf(buf, "%s %d %f", t.name, &(t.age), &(t.score));printf("2按照格式打印  : %s %d %f\n", t.name, t.age, t.score);//2return 0;
}

 

5、fwrite 和 fread

使用这两个函数要在fopen时换成“wb”“rb”这两个打开命令

第一个参数是输入或输出的地址,第二个是元素的大小,第三个是元素的数量,最后是文件流

举例:

 int main()
{int arr[] = { 1,2,3,4,5 };FILE*pf = fopen("test.txt", "wb");if (pf == NULL){perror("fopen");return 1;}//写数据int sz = sizeof(arr) / sizeof(arr[0]);fwrite(arr, sizeof(arr[0]), sz, pf);//以二进制的形式写进去的fclose(pf);pf = NULL;return 0;
}

 

举例:

int main()
{int arr[5] = {0};FILE* pf = fopen("test.txt", "rb");if (pf == NULL){perror("fopen");return 1;}//读数据fread(arr, sizeof(arr[0]), 5, pf);//以二进制的形式写进去的int i = 0;for (i = 0; i < 5; i++){printf("%d ", arr[i]);//1 2 3 4 5}fclose(pf);pf = NULL;return 0;
}

 

二、随机读写函数

1、fseek

函数功能是将文件中的光标定位到指定位置

第一个参数是指定流,第二个参数是偏移量,第三个参数是起始位置

举例:

int main()
{FILE* pf = fopen("test.txt", "r");if (pf == NULL){perror("fopen");return 1;}//读文件int ch = fgetc(pf);printf("%c\n", ch);//a//fseek(pf, 4, SEEK_CUR);//fseek(pf, 5, SEEK_SET);fseek(pf, -4, SEEK_END);ch = fgetc(pf);printf("%c\n", ch);//ffclose(pf);pf = NULL;return 0;
}

2、ftell

 

函数功能是返回文件指针相对于起始位置的偏移量

3、rewind

函数的功能是让文件指针的位置回到文件的起始位置


 本章到这里就结束啦,希望各位小伙伴可以点个关注,支持一下阿鹿,大家的鼓励是我前进的第一动力,3Q~

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

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

相关文章

vue h5使用postcss-pxtorem

1、安装我们所需要的依赖 npm install lib-flexiblenpm install postcss-pxtorem 2、在main.js中引入lib-flexible import lib-flexible/flexible 3、在项目根目录中创建文件 postcss.config.js module.exports {plugins: {autoprefixer: {},"postcss-pxtorem": …

小白一次过软考高级(信息系统项目管理师)秘籍,请收藏!!!

作为一位软考老司机&#xff0c;我觉得我还是有资格说一说的。 我的考试成绩&#xff1a; 高级软考考试基础信息&#xff1a; 考试科目&#xff1a;总共分为3科&#xff0c;综合知识、案例分析、论文 成绩&#xff1a;满分75分&#xff0c;45分及格&#xff0c;需同时通过3科…

蓝桥杯刷题之路径之谜

题目来源 路径之谜 不愧是国赛的题目 题意 题目中会给你两个数组&#xff0c;分别用row和col来表示 每走一步&#xff0c;往左边和上边射一箭&#xff0c;走到终点的时候row数组和col数组中的值必须全部等于0这个注意哈&#xff0c;看题目看了半天&#xff0c;因为我第一次…

3d放上模型为什么渲染不出来---模大狮模型网

如果在3D软件中放置模型后无法正确渲染出来&#xff0c;可能有几个常见的原因导致这种情况发生&#xff1a; 材质设置问题&#xff1a;确保所放置的模型具有正确的材质和纹理&#xff0c;并且材质设置正确。如果材质设置有误&#xff0c;可能会导致模型无法正确显示。 光照设置…

java算法day36 | 贪心算法 part05 ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

435. 无重叠区间 思路&#xff1a; 重叠区间典型题目&#xff0c;先按照左边界排序&#xff0c;再从左到右判断相邻区间是否重叠&#xff0c;重叠则删除其中一个。 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(a,b)->{r…

探索AI大模型学习的未来之路

文章目录 一、引言二、AI大模型学习的理论基础2.1 深度学习2.2 数据处理 三、AI大模型的训练优化与应用实例3.1 训练优化3.2 AI大模型在特定领域的应用实例 四、AI大模型学习的注意点五、AI大模型学习的未来发展趋势与挑战5.1 发展趋势5.2 所面对的挑战 六、结论 一、引言 随着…

Python基础教程:基本数据类型

基本数据类型 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组) 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合) Numbers(数字) 数字数据类型用于存储数值。 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对…

【[NOIP1999 普及组] Cantor 表】

题目描述 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的&#xff1a; 我们以 Z 字形给上表的每一项编号。第一项是 1 / 1 1/1 1/1&#xff0c;然后是 1 / 2 1/2 1/2&#xff0c; 2 / 1 2/1 2/1&#xff0c; 3 / 1 3/1…

是德科技KEYSIGHT N9938A频谱分析仪

181/2461/8938产品概述&#xff1a; N9938A 是一款使用电池供电的便携式微波频谱分析仪&#xff1b;配置还包括全频段跟踪发生器和前置放大器、干扰分析仪、时间选通、VSWR 和反射测量、内置功率计。 N9938A FieldFox 手持式微波频谱分析仪 主要特性和功能 频率范围&#xff…

网络安全:Kali Linux 进行SQL注入与XSS漏洞利用

目录 一、实验 1.环境 2.Kali Linux 进行SQL注入 3.Kali Linux 进行XSS漏洞利用 二、问题 1.XSS分类 2.如何修改beef-xss的密码 3.beef-xss 服务如何管理 4.运行beef报错 5.beef 命令的颜色有哪些区别 6.owasp-top-10 有哪些变化 一、实验 1.环境 &#xff08;1&a…

【LVGL-色环部件】

LVGL-色环部件 ■ LVGL-色环部件■ 示例一 ■ LVGL-色环部件 ■ 示例一 /* 获取当前活动屏幕的宽高 */ #define scr_act_width() lv_obj_get_width(lv_scr_act()) #define scr_act_height() lv_obj_get_height(lv_scr_act())static lv_obj_t* obj;/*** brief 色环事件回调* …

Unity编辑器功能 将选中的文件夹复制一份到其他文件夹

[MenuItem("Ab包工具/将选中的文件移动到StreamingAssets文件夹下")] public static void MoveFireToStreamA() { //得到选中文件的数组 Object[] selectobj Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets); i…