顺序读写函数的介绍:fputs fgets

news/2024/12/22 9:50:24/

目录

函数介绍:

fputs:

写入多行字符到文件中:

文件效果:

 图中的效果是变成了一行,那么想要变成多行的效果应该如下代码所示进行操作:

多行字符代码:

文件效果: 

fgets:

将文件内容打印到屏幕上:

文件内容展示:

代码:

 问题:

屏幕效果:

数组空间本就有内容:

调用代码效果展示:


函数介绍:

  • fgets:一次读取一行字符
  • fputs:一次写入一行字符 

fputs:

fputs(“一行字符”,文件指针变量);

写入多行字符到文件中:

int main()
{FILE* pf = fopen("data.txt","w");if (pf == NULL){  perror("fopen");return l;}
//写一行fputs("hello world",pf);fputs("hehe",pf);fclose(pf);pf = NULL;return 0;
}
文件效果:

 图中的效果是变成了一行,那么想要变成多行的效果应该如下代码所示进行操作:

多行字符代码:
  fputs("hello world\n",pf);fputs("hehe\n",pf);fclose(pf);pf = NULL;
文件效果: 

fgets:

  • fgets()(函数原型:char *fgets(char *restrict str, int size, FILE *restrict stream))
  • fgets(存放空间的起始地址,读取字符的个数,文件指针变量)
  • 本意是将读取的内容放入空间中。

将文件内容打印到屏幕上:

文件内容展示:

代码:
int main()
{FILE* pf = fopen("data.txt","r");if (pf == NULL){  perror("fopen");return l;}char arr[20] = {0};fgets(arr,20,pf);printf("%s\n",arr);fclose(pf);pf = NULL;return 0;
}

大意:将文件的内容进行读取,读取后的内容放到一个空间中,随后使用printf进行打印出,完成文件内容打印到屏幕上。

如图中,读取文件中第一行的二十个字符,并将读取后的二十个字符放入arr所指向的空间中,(arr是数组名,代表arr数组空间的第一个元素地址)

 问题:

在放入空间之前我们会发现一个问题,就是函数是读取一行的内容,而我们的文件的效果中有两行,且第一行的内容不足填充数组空间,所以会不会使用第二行进行填充数组空间?

屏幕效果:

 看样子当文件中的第一行内容不够,需要读取的次数时,不会读取第二行。

那么当我们将数组中一开始就设数值再次运行呢?

数组空间本就有内容:

int main()
{FILE* pf = fopen("data.txt","r");if (pf == NULL){  perror("fopen");return 1;}char arr[20] = "xxxxxxxxxxxxx";fgets(arr,20,pf);printf(l%s\n",arr);fclose(pf);pf = NULL;return 0;
}
调用代码效果展示:

  •  从上图我们得知当读取完一行的内容后,便会在后面自动加上\0
  • 所以读取20个字符实际上是读取文件内容的19给字符,后面自己加上\0
  • 且,如果有多行内容,读取的时候会读取\n,且读取失败会返回空指针

http://www.ppmy.cn/news/1124790.html

相关文章

Visual Studio 更新:远程文件管理器

Visual Studio 中的远程文件管理器可以用来访问远程机器上的文件和文件夹,通过 Visual Studio 自带的连接管理器,可以实现不离开开发环境直接访问远程系统,这确实十分方便。 自从此功能发布以来,VS 开发团队努力工作,…

Supervisor进程管理

Supervisor进程管理 概述:supervisor 是一个用 python 语言编写的进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。当一个进程意外被杀死,supervisor 监听到进程死后,可以很方便的让进程自动恢复,…

前端项目练习(练习-004-webpack-02)

学习前,首先,创建一个web-004项目,内容和web-003一样。(注意将package.json中的name改为web-004) 前面的例子,成功将js文件打包到了dist中,但是我们有三个文件,css,js和h…

Java基于SSM+JSP的服装定制系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 .技术栈3 分析4系统设计4.1 软件功能模块设计4.2.2 物理模型设计 5系统详细设计5.1系统功…

数据链路层协议

文章目录 数据链路层协议0. 数据链路层解决的问题1. 以太网协议(1) 认识以太网(2) 以太网帧格式<1> 两个核心问题 (3) 认识MAC地址(4) 局域网通信原理(5) MTU<1> 认识MTU<2> MTU对IP协议的影响<3> MTU对UDP协议的影响<4> MTU对TCP协议的影响<…

抽检监测实施

声明 本文是学习GB-T 42893-2023 电子商务交易产品质量监测实施指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件提供了开展电子商务交易的有形产品质量监测的总则&#xff0c;监测准备、监测实施、监测效果评价 与反馈等过程指导…

用flex实现grid布局

1. css代码 .flexColumn(columns, gutterSize) {display: flex;flex-flow: row wrap;margin: calc(gutterSize / -2);> div {flex: 0 0 calc(100% / columns);padding: calc(gutterSize / 2);box-sizing: border-box;} }2.用法 .grid-show-item3 {width: 100%;display: fl…

小程序中如何导出会员卡的档案信息

对于医院、美容院等特殊商家&#xff0c;可能需要在给会员添加一些档案。例如今天客户是什么情况&#xff0c;做了什么服务&#xff0c;解决了什么问题。添加这些档案后&#xff0c;系统会保存这些信息&#xff0c;供下次来的时候使用&#xff0c;或者为商家日后做营销提供依据…