c语言:文件操作(2),认识各种文件操作函数

fgets

作用

fgets是C语言标准库中用于从文件中读取字符串的函数。

fgets函数从指定的文件流stream中读取最多n-1个字符,或者直到遇到换行符(包括换行符在内),并将其存储到以str指向的字符数组中。读取的字符串会以null字符\0结尾,因此fgets可以安全地读取包含空格的字符串。

如果成功读取了字符串,则fgets返回str;如果到达文件末尾或者发生错误,它会返回NULL

例如,可以使用fgets函数从文件中逐行读取文本数据,并将每行存储到相应的字符数组中。

格式

char *fgets(char *str, int n, FILE *stream);

用法

我们打开一个名为date.txt的文件,并使用fgets函数从中读取一行数据,然后将其打印到控制台上。fgets函数的第一个参数是目标缓冲区,第二个参数是要读取的最大字符数,第三个参数是文件指针。如果读取成功,fgets会返回一个非空指针,否则返回空指针。

#define  _CRT_SECURE_NO_WARNINGS//fgets
#include<stdio.h>int main()
{FILE* file;char buffer[100];//创建一个存储字符串的数组//打开文件file = fopen("date.txt", "r");if (file == NULL){printf("无法打开文件\n");return 1;}//从文件中读取一行数据if (fgets(buffer, 100, file) != NULL){printf("从文件中读取的内容是:%s", buffer);}else{printf("读取文件失败\n");}//关闭文件fclose(file);return 0;
}

我已经创建好了名为date.txt的文件名,并且写入了如下图的数据。 

运行结果: 


fputs 

作用

fputs是C语言标准库中用于向文件中写入字符串的函数。

fputs函数将以str指向的字符串写入到指定的文件流stream中。如果写入成功,fputs返回非负值;如果发生错误,它返回EOF

fprintffwrite等函数不同,fputs专门用于向文件中写入字符串,而不是格式化的数据或二进制数据。

例如,可以使用fputs函数将一个字符串写入到文件中,或者将一个字符串逐行写入到文件中。

格式

int fputs(const char *str, FILE *stream);

用法

示例中,我将date.txt中的数据拷入到date_copy.txt的文件中去。

#include<stdio.h>int main()
{//声明两个指针变量,一个是源文件,一个是目标文件FILE* source_file, *target_file;char ch;//以只读的方式打开源文件date.txtsource_file = fopen("date.txt", "r");if (source_file == NULL){printf("无法打开源文件\n");return 1;}//以只写的方式打开目标文件date_copy.txttarget_file = fopen("date_copy.txt", "w");if (target_file == NULL){printf("无法打开目标文件\n");fclose(source_file);return 1;}//从源文件中读取数据,写入到目标文件中while ((ch = fgetc(source_file)) != EOF){fputc(ch, target_file);}//关闭文件fclose(source_file);fclose(target_file);printf("文件拷贝完成\n");return 0;
}

运行结果:


fscanf

作用

fscanf是C语言标准库中用于从文件中按照指定格式读取数据的函数。

fscanf函数从指定的文件流stream中按照指定的格式字符串format读取数据,并将读取到的数据按照格式转换后存储到对应的变量中。fscanf函数的使用方式与scanf函数类似,只是scanf是从标准输入中读取数据,而fscanf是从文件中读取数据。

fscanf函数返回成功匹配并转换的参数个数,如果没有匹配成功,则返回0。如果发生读取错误或者到达文件末尾,则返回EOF

格式

int fscanf(FILE *stream, const char *format, ...);
fscanf函数从指定的文件流stream中按照指

用法

读取文件中的两个数字,我事先在input文件中放了两个数字68和6。

#include<stdio.h>int main()
{FILE* file = fopen("input.txt", "r");if (file != NULL){int num1, num2;if (fscanf(file, "%d %d", &num1, &num2) == 2){printf("读取的两个整数分别是: %d 和 %d\n", num1, num2);}else{printf("读取文件时发生错误或者已达到文件末尾\n");}fclose(file);}else{printf("无法打开文件\n");}return 0;
}


fprintf

作用

fprintf是C语言标准库中用于向文件中按照指定格式写入数据的函数。

fprintf函数根据指定的格式字符串format将数据按照指定格式写入到指定的文件流stream中。与printf函数类似,fprintf函数可以接受可变数量的参数,根据format字符串中的格式说明符进行格式化输出。

fprintf函数返回成功写入的字符数,如果发生写入错误,则返回负值。

格式

int fprintf(FILE *stream, const char *format, ...);

用法

现在,我想要写入两个%d的数字到output的文件中去。

//fprintf
#include<stdio.h>
int main()
{FILE* file = fopen("output.txt", "w");if (file != NULL){int num1 = 10, num2 = 20;if (fprintf(file, "两个整数分别是:%d 和%d \n", num1, num2) > 0){printf("数据已经成功写入文件\n");}else{printf("写入文件时发生错误\n");}fclose(file);}else{printf("无法打开文件\n");}return 0;
}

运行完成后,我们可以看见两个数字已经写入。


sscanf

作用

sscanf是C语言标准库中用于从字符串中按照指定格式读取数据的函数。

sscanf函数从指定的字符串str中按照指定的格式字符串format读取数据,并将读取到的数据按照格式转换后存储到对应的变量中。sscanf函数的使用方式与scanf函数类似,只是scanf是从标准输入中读取数据,而sscanf是从字符串中读取数据。

sscanf函数返回成功匹配并转换的参数个数,如果没有匹配成功,则返回0。

格式

int sscanf(const char *str, const char *format, ...);

用法 

我现在要从字符串按照指定格式读取出三个不同类型的数据。

//sscanf
#include<stdio.h>
int main()
{char input[] = "35 54.3 hello";int num1;double num2;char str[10];// 从字符串中按照格式"%d %f %s"读取数据if (sscanf(input, "%d %lf %s", &num1, &num2, str) == 3){printf("从字符串中读取的数据分别是:%d, %.2lf, %s\n", num1, num2, str);}else{printf("读取字符串时发生错误\n");}return 0;
}

运行结果


sprintf

作用

sprintf函数是C语言中的一个标准库函数,用于将格式化的数据写入字符串中。

sprintf函数的作用是根据指定的格式化字符串format,将后续的参数按照格式化要求写入到字符数组str中。它的使用方式与printf函数类似,不同之处在于printf函数将输出结果写入到标准输出流(通常是显示器),而sprintf函数将输出结果写入到指定的字符数组中。

格式

int sprintf(char *str, const char *format, ...);

用法

格式化数据

//sprintf
#include <stdio.h>int main() 
{char buffer[100];int num = 123;double value = 45.67;char str[] = "hello";sprintf(buffer, "数字:%d, 浮点数:%.2lf, 字符串:%s", num, value, str);printf("格式化后的字符串:%s\n", buffer);return 0;
}

fseek

作用

fseek函数是C语言标准库中用于移动文件指针位置的函数,它允许程序在文件中定位到指定的位置,从而进行读取或写入操作。

格式

int fseek(FILE *stream, long offset, int origin);

用法

//fseek
#include <stdio.h>int main() 
{FILE* fp = fopen("example.txt", "r");if (fp != NULL) {fseek(fp, 10, SEEK_SET);  // 将文件指针移动到文件开头后的第10个字节处// 进行读取或写入操作fclose(fp);}else {printf("打开文件失败\n");}return 0;
}

ftell

作用

ftell函数是C语言标准库中用于获取文件指针当前位置的函数。它返回当前文件位置指针的偏移量,以字节数表示。

格式

long int ftell(FILE *stream);

用法

读取字节数

#include <stdio.h>int main() 
{FILE* fp = fopen("example.txt", "r");if (fp != NULL) {fseek(fp, 0, SEEK_END);  // 将文件指针移动到文件末尾long int file_size = ftell(fp);  // 获取文件指针当前位置(即文件大小)printf("文件大小为 %ld 字节\n", file_size);fclose(fp);}else {printf("打开文件失败\n");}return 0;
}


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

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

相关文章

【小白专用】php以pdo方式连接sqlserver,开启sqlsrv扩展

一、安装ODBC程序&#xff0c; 下载适用于 SQL Server 的 ODBC 驱动程序 - 适用于 SQL Server 的 ODBC 驱动程序 |Microsoft 学习 运行安装程序&#xff0c;出现如下图所示页面&#xff1b; 选择下一步&#xff1b;选择我同意许可协议中的条款后选择下一步&#xff1b; 点击安…

22 3GPP在SHF频段基于中继的5G高速列车场景中的标准化

文章目录 信道模型实验μ参考信号初始接入方法波形比较 RRH&#xff1a;remote radio head 远程无线头 HTS&#xff1a;high speed train 高速移动列车 信道模型 考虑搭配RRH和车载中继站之间的LOS路径以及各种环境&#xff08;开放或峡谷&#xff09;&#xff0c;在本次实验场…

ARM GIC(四) gicv3架构基础

GICv3架构是GICv2架构的升级版&#xff0c;增加了很多东西。变化在于以下&#xff1a; 使用属性层次&#xff08;affinity hierarchies&#xff09;&#xff0c;来对core进行标识&#xff0c;使gic支持更多的core 将cpu interface独立出来&#xff0c;用户可以将其设计在core…

说说 style gan 中的感知路径长度(Perceptual Path Length)

我在之前的博库中介绍了 style gan 的基本原理&#xff0c;原文中有提出感知路径长度&#xff08;Perceptual Path Length&#xff09;的概念。这是一种评价生成器质量的方式。 PPL基本思想&#xff1a;给出两个随机噪声 z 1 , z 2 ​ &#xff0c;为求得两点的感知路径长度PPL…

数据可视化---离群值展示

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

HuatuoGPT模型介绍

文章目录 HuatuoGPT 模型介绍LLM4Med&#xff08;医疗大模型&#xff09;的作用ChatGPT 存在的问题HuatuoGPT的特点ChatGPT 与真实医生的区别解决方案用于SFT阶段的混合数据基于AI反馈的RL 评估单轮问答多轮问答人工评估 HuatuoGPT 模型介绍 HuatuoGPT&#xff08;华佗GPT&…

基于博弈树的开源五子棋AI教程[1 位棋盘]

文章目录 0 引子1 定义2 实现 0 引子 常见的五子棋棋盘大小为15x15&#xff0c;最直观的表示就是一个二维数据。本文为了易于拓展一开始使用的是QVector<QVector>的数据&#xff0c;但是在分支因子为10的情况下只能搜索到4层左右&#xff0c;后面深度加深&#xff0c;搜…

Vue中为什么data属性是一个函数而不是一个对象?(看完就会了)

文章目录 一、实例和组件定义data的区别二、组件data定义函数与对象的区别三、原理分析四、结论 一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象&#xff0c;也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:&quo…

Spring(2)Spring从零到入门 - Spring注解开发(以IoC/DI为核心)

Spring&#xff08;2&#xff09;Spring从零到入门 - Spring注解开发&#xff08;以IoC/DI为核心&#xff09; 文章目录 Spring&#xff08;2&#xff09;Spring从零到入门 - Spring注解开发&#xff08;以IoC/DI为核心&#xff09;3 Spring之IOC/DI注解开发3.1 注解开发定义be…

TrustZone之安全启动与引导失败处理

一、引导和信任链 引导是任何TrustZone系统的关键部分。只有在引导流程中之前运行的所有软件组件都是可信的情况下,才能信任某个软件组件。这通常被称为信任链。下图显示了一个简化的信任链: 在我们的示例中,首先运行的代码是boot ROM。我们必须隐式信任boot ROM,因…

iPhone手机开启地震预警功能

iPhone手机开启地震预警功能 地震预警告警开启方式 地震预警 版权&#xff1a;成都高新减灾研究所 告警开启方式

2-高可用-负载均衡、反向代理

负载均衡、反向代理 upstream server即上游服务器&#xff0c;指Nginx负载均衡到的处理业务的服务器&#xff0c;也可以称之为real server,即真实处理业务的服务器。 对于负载均衡我们要关心的几个方面如下&#xff1a; 上游服务器配置&#xff1a;使用upstream server配置上…

python可以做小程序研发嘛,python能做微信小程序吗

大家好&#xff0c;给大家分享一下python可以做微信小程序开发吗&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 大家好&#xff0c;给大家分享一下用python编写一个小程序&#xff0c;很多人还不知道这一点。下面详细解释一下用python代码…

软件测试十大必问面试题(附答案和解析)

01 介绍之前负责的项目 参考答案&#xff1a;先大概描述一下这个项目是做什么的&#xff08;主要功能&#xff09;&#xff0c;包括哪些模块&#xff0c;是什么架构的&#xff08;B/S、C/S、移动端&#xff1f;&#xff09;&#xff0c;你在其中负责哪些模块的测试。期间经历了…

【Vue】el-date-picker日期范围组件(本周、本月、上周)

系列文章 【Vue】vue增加导航标签 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue&#xff0c;在Windows IIS平台…

智能优化算法应用:基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于非洲秃鹫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.非洲秃鹫算法4.实验参数设定5.算法结果6.…

光条中心线提取-Steger算法 [OpenCV]

在线结构光视觉传感器中&#xff0c;由线激光器发射出的线结构光&#xff0c;在本质上为一个连续且具有一定厚度的空间光平面&#xff0c;而在目标表面上所形成的具有一定宽度的光条特征&#xff0c;即为该光平面与目标表面相交而成的交线。在该空间光平面的厚度方向上&#xf…

IDEA创建springboot工程

选择spring boot的版本和依赖 finish创建完成 删除无用的文件

Axure中继器的使用实现表格的增删改查的自定义文件

目录 一.认识中继器 1.1.什么中继器 1.2. 中继器的组成 1.3.中继器的使用场景 二.中继器进行增删改查 三.十例表格增删改查 还有Axure这个东西许多东西需要我们去发现&#xff0c;我们需要去细心的研究&#xff0c;我们一起加油吧&#xff01;&#xff01;&#xff01;今…

福建农林大学 html +css + JavaScript 期末复习 -- 保姆级

html css JavaScript 期末复习&#xff08;保姆级复盘&#xff09; 考试题型 1、选择题 20题 30分 2、判断题 15题 15分 3、程序题 3 题 30分 4、综合题 2 题 25分 1、网页第一代文本标签&#xff08;直接上代码&#xff0c;看保姆级注解&#xff09; <!-- doctype: docum…