C语言fgets()函数:以字符串形式读取文件

2023-11-01

3c610b7c96b5e3da5c2e4f22113b6e3e.png

点击上方蓝字关注我,了解更多咨询

d64147af8e0907455f59ea65af955f1d.png

C语言 fgets() 函数从文本文件中读取一个字符串,并将其保存到内存变量中。fgets() 函数位于 <stdio.h> 头文件中,其使用格式如下:

fgets(字符串指针,字符个数n,文件指针);

格式说明:

  • 第 1 个参数“字符串指针”可以是一个字符数组名,也可以是字符指针,用于存放读出的字符串;

  • 第 2 个参数是一个整型数,用来指明读出字符的个数;

  • 第 3 个参数“文件指针”指向一个已经打开并正在操作的文件。


功能:从文件指针所指向的文本文件中读取长度不超过 n-1 的字符串,并在结尾处加上“\0”组成一个字符串,存入“字符串指针”中。

若函数调用成功,则返回存放字符串的首地址;若读到文件结尾处或调用失败时,则返回字符常量 NULL。

例如,语句 fgets(char*s,int n,FILE*fp);的含义是从 fp 指向的文件中读入 n-1 个字符,存入字符指针 s 指向的存储单元。

当满足下列条件之一时,读取过程结束。

  • 已读取了 n-1 个字符。

  • 当前读取的字符是回车符。

  • 已读取到文件末尾。

示例

应用 fgets() 函数和 fputs() 函数建立一个文本文件,读取文件中的内容并在屏幕上显示。代码如下:

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main()
{
    FILE *fp1,*fp2;        /*定义两个文件指针变量fp1,fp2*/
    char str[10];
    if((fp1=fopen("file2.txt","w"))==0)    /*以只写方式新建文件file2.txt,并测试是否成功*/
    {
       printf("不能创建文件\n");
       exit(0);        /*强制退出程序*/
    }
    printf("输入字符串(以空串作为结束输入):\n");
    gets(str);        /*接收从键盘输入的字符串*/
    while(strlen(str)>0)
    {
        fputs(str,fp1);
        fputs("\n",fp1);    /*在文件中加入换行符作为字符串分隔符*/
        gets(str);
    }
    fclose(fp1);        /*写文件结束,关闭文件*/
    if((fp2=fopen("file2.txt","r"))==0) /*以只读方式新建并打开文件file2.txt,测试是否成功*/
    {
        printf("不能打开文件\n");
        exit(0);
    }
    printf("输出字符串:\n");
    while(fgets(str,10,fp2)!=0)    /*从文件中读取字符串并存放到字符数组str中,测试是否已读完*/
        printf("%s",str);        /*把数组str中的字符串输出到屏幕上*/
    printf("\n");        /*换行*/
    fclose(fp2);        /*关闭文件*/
}

运行结果:

输入字符串(以空串作为结束输入):
www.weixueyuan.net
123456!

输出字符串:
www.weixueyuan.net
123456!

本程序中定义了两个文件指针 fp1 和 fp2,分别用于写文件和读文件的操作。读者要熟悉 fgets() 函数和 fputs() 函数的使用。

第 15 行的“strlen(str)>0”语句用于测试从键盘输入的字符串是否为空串(即只输入回车符)。

28ced22980a4d52410d814c13e02ad60.png

END

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

c4afc2bc9ab15adb59ebaad167128599.png

a213cd81fb8ad2198e6340065d070502.gif

戳“阅读原文”我们一起进步

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言fgets()函数:以字符串形式读取文件 的相关文章

随机推荐

  • 最小二乘法曲线拟合

    最小二乘法曲线拟合以及Matlab实现 在实际工程中 我们常会遇到这种问题 已知一组点的横纵坐标 需要绘制出一条尽可能逼近这些点的曲线 或直线 以进行进一步进行加工或者分析两个变量之间的相互关系 而获取这个曲线方程的过程就是曲线拟合 目录
  • rtplib在linux上的编译安装

    JRTPlib简介 在http www tekuba net program 10 中提到过RTP的例程 这里参考网络上的资料给出JRtpLIB的嵌入式arm环境以及桌面环境开发环境的建立 RTP 是目前解决流媒体实时传输问题的最好办法 要
  • sql注入手法详解

    sql定义 sql 结构化查询语句 sql注入 首先我们通过前端将我们的payload 恶意代码 传送到后台服务器 传送到后台以后 我们提交的payload拼接到sql语句中 作为sql语句的一部分被执行 从而导致数据库又被脱库甚至删库的风
  • std:weak_ptr 用法小结。

    http blog csdn net coolmeme article details 43266319 参考了这篇博客 感谢博主的贡献 感谢博主的翻译 不过他写的太多了 我只是记录一下使用方法 原理就不深究了 需要了解其原理的可以自行去那
  • Unity性能优化一些学习总结

    关于Unity性能优化的自我总结 1 硬件支持优化 1 平台设置优化 减少FPS 在ProjectSetting gt Quality中的 VSync Count 参数会影响你的FPS EveryVBlank相当于FPS 60 EveryS
  • 【Go语言学习之路 2】Go目录结构划分

    目录结构划分 三个环境变量的配置 GOROOT Go 安装后的根目录 例如 D Program Files Go 安装过程中会由安装程序自动写入系统环境变量中 go语言自带的类库 GOBIN Go 的二进制文件存放目录 GOPATH bin
  • JDBC中级实现--数据库连接四要素的抽取与动态获取

    1 数据库连接四要素不应该写死在代码中 扩展性不高 应该抽取到配置文件中动态读取 扩展文件名 properties DRIVER CLASS NAME com mysql jdbc Driver URL jdbc mysql mysql j
  • 爬虫课程笔记(七)scrapy入门与深入

    爬虫课程笔记 Scrapy 异步与非阻塞区别 爬虫流程 入门 创建一个scrapy项目 生成一个爬虫 提取数据 保存数据 logging 实现翻页请求 深入scrapy 定义item 程序的debug信息 scrapy shell sett
  • Python学习笔记(小甲鱼版)

    目录 文章目录 一 python是什么 1 Python 特点 2 idea是什么 3 print 的作用是什么 4 基础语法 一 python是什么 Python 是一个高层次的结合了解释性 编译性 互动性和面向对象的脚本语言 Pytho
  • Hive小文件问题:如何产生、造成影响、解决办法

    一 小文件是如何产生的 1 动态分区插入数据 产生大量的小文件 从而导致map数量剧增 2 reduce数量越多 小文件也越多 reduce的个数和输出文件是对应的 3 数据源本身就包含大量的小文件 二 小文件问题的影响 1 从Hive的角
  • [NOI2010]超级钢琴【RMQ+贪心+堆】

    题目链接 超级棒的一道题 解这道题 需要分一下几步来看 取的是连续段 我们可以对每个可能起点去知道它的最大可能解 起点begin 最大可行解一定是begin L 1 begin R 1中的一个 如果每次都是取最大的话 那么下一个同起点的一定
  • 稳定的kvm服务器,KVM——服务器资源的充分利用

    内容要点 一 KVM介绍 二 KVM部署实例 一 KVM介绍 一 KVM虚拟化架构 KVM模块直接整合在linux内核中 二 KVM组成 1 KVM Driver 核心内核 虚拟机创建 虚拟机内存分配 虚拟CPU寄存器读写 虚拟CPU运行
  • Oracle将查询结果存入临时表的写法

    有时候因为查询结果很大且需要再跟其它表进行不同形式的连表查询 这是如果整个sql写下来不仅看起来臃肿而且查询效率也很低 Oracle提供了一种将查询结果存入到 临时表的写法可以讲查询结果存储到临时表中待用 我这里只记一种会话级别的用法 在当
  • MySQL-修改表(ALTER)

    常见的修改有 ALTER TABLE 表名 ADD 列名 索引 主键 外键等 ALTER TABLE 表名 DROP 列名 索引 主键 外键等 ALTER TABLE 表名 ALTER 仅用来改变某列的默认值 ALTER TABLE 表名
  • 常见排序算法04之堆排序

    常见排序算法04之堆排序 1 堆heap 何为堆 堆需要满足两个条件 1 元素插入按照完全二叉树插入 2 父节点值parent要大于左右子节点的值 大顶堆 所以例如有一数组 arr 4 10 3 5 1 先按照完全二叉树将元素插入树中 1能
  • 题目 1016: [编程入门]水仙花数判断

    题目描述 打印出所有 水仙花数 所谓 水仙花数 是指一个三位数 其各位数字立方和等于该本身 例如 153是一个水仙花数 因为153 1 3 5 3 3 3 输入格式 无 输出格式 输出每一个水仙花数 一个数占一行 判断是否是水仙花数 inc
  • 支付项目介绍-清结算、风控、路由系统

    这里只是说了个大概 详细细节还需要涉及到具体项目时去深入了解逻辑和规则 一 清结算系统 1 清结算订单流水 流程说明 1 消费订单系统将支付成功的订单推送进清结算流水 记录相关订单信息 2 结算周期是D0 记录预计结算时间 调用账务实时结算
  • 将文件间的编译依存关系将至最低

    include date h include address h class Person private Date theBirthDate Address theAddress date h和address h这些头文件中有任何一个被改
  • 绕懵逼之同步/异步 阻塞/非阻塞

    被面试官绕蒙蔽了 特此整理总结一下 1概念解析 1 1 同步与异步概念描述 同步异步概念与消息的通知机制有关 所谓同步就是一个任务的完成需要依赖另外一个任务时 只有等待被依赖的任务完成后 依赖的任务才能算完成 这是一种可靠的任务序列 要么成
  • C语言fgets()函数:以字符串形式读取文件

    点击上方蓝字关注我 了解更多咨询 C语言 fgets 函数从文本文件中读取一个字符串 并将其保存到内存变量中 fgets 函数位于