fgets函数的理解

2023-11-16

fget函数的原型如下:char *fgets(char *buf, int n, FILE *fp)


功能:从文件流读取一行,送到缓冲区,使用时注意以下几点:

1.当遇到换行符或者缓冲区已满,fgets就会停止,返回读到的数据,值得注意的是不能用fgets读二进制文件,因为fgets会把二进制文件当成文本文件来处理,这势必会产生乱码。

2.每次调用,fgets都会把缓冲区的最后一个字符设为null,这意味着最后一个字符不能用来存放需要的数据,所以如果有一行,含有LINE_SIZE个字符(包括换行符),要想把这行读入缓冲区,请把参数n设为LINE_SIZE+1

3. 由结论1可推出:给定参数n,fgets只能读取n-1个字符(包括换行符),如果有一行超过n-1个字符,那么fgets返回一个不完整的行,也就是说,只读取该行的前n-1个字符,但是,缓冲区总是以null字符结尾,对fgets的下一次调用会继续读该行。


用法举例:
读取一个文件并打印之

  1. FILE * fp = fopen(argv[1],"r");
  2. char buf[200];
  3. while (fgets(buf,200,fp) != NULL) {    /* 每行的字符不能超过199才能正常工作 */
  4.       printf("%s",buf);
  5. }

注意打印不用使用   printf("%s/n",buf),因为它会把换行符也读进去


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

fgets函数的理解 的相关文章

  • 用 C 将位写入文件

    我有这个字符串 101 我想用 C 语言将其写入文件 而不是文本 101 等 8 位 x 字符 但直接使用字符串作为位 位 1 位 0 和位 1 这样文件将是3位 有可能吗 我在网上搜索并尝试这样做 char c 25 101 FILE b
  • 等待文件关闭的良好而干净的方法[重复]

    这个问题在这里已经有答案了 可能的重复 等待文件在 NET 中解锁 https stackoverflow com questions 50744 wait until file is unlocked in net 我有一个打开的文件 例
  • 从绝对路径获取名称,从最后一个斜杠获取子字符串,java android

    我想提取绝对路径的名称 如果我有一个值为 mnt sdcard Videos Videoname 的字符串 我想保存一个值为 Videoname 的字符串 字符串正在变化 我之前无法获取斜杠的数量 如何从最后一个斜杠中分割子字符串 mnt
  • Unix 上的常规文件是什么

    我看到了手册页test http pubs opengroup org onlinepubs 009695399 utilities test html 其中提到了下面的内容 e pathname True if pathname reso
  • 带汇总总计和小计

    我有一个脚本可以生成几乎已经存在的结果集 我正在尝试获取小计和总计 我在年份栏中得到了小计 在最后得到了总计 我的目标是让最终结果显示 总计 而不是小计 请注意 由于汇总函数 我的最后一行 位置 也返回为空 SELECT YEAR COUN
  • PDO 和 IS NOT NULL 函数

    我是 PDO 新手 我想知道是否有相当于 mysql 语句的语句来检查参数是否不为空 例如 SELECT FROM table WHERE param IS NOT NULL 我试过这个 pdo gt prepare SELECT FROM
  • C 中的 NULL 是否需要/定义为零?

    在我的 GCC 测试程序中 NULL 似乎为零 但维基百科说NULL只需要指向不可寻址的内存 有编译器做吗NULL非零 我很好奇是否if ptr NULL 是比更好的练习if ptr NULL is guaranteed to be zer
  • Javascript 将 CSV 文件加载到数组中

    我正在 WordPress 中开发一个网页 该网页需要有一个包含所有县的组合框 我有一个 csv 格式的数据集 其中包含所有这些县的约 10k 行 当用户在下拉列表中选择一个县时 我只想在网页中显示所选县的数据 这是我的要求 在 WordP
  • 使用 AVFoundation 快速获取视频帧

    这是我的代码 我想要获取我的视频并将帧数据获取到 SceneKit SCNSphere NSString videoPath NSBundle mainBundle l var videoURL NSBundle mainBundle UR
  • 使大型静态数据文件可供 kubernetes pod 使用

    我有一些相当大的 UTF 8 数据文件 pod 需要在启动时加载到内存中 从几百 KB 到大约 50 MB 该项目 包括 helm 图表 是开源的 但其中一些文件不是开源的 否则我可能只会将它们包含在图像中 我最初的想法是创建配置映射 但我
  • 多线程文件写入

    我正在尝试使用多个线程写入大文件的不同部分 就像分段文件下载器所做的那样 我的问题是 执行此操作的安全方法是什么 我是否打开文件进行写入 创建线程 将 Stream 对象传递给每个线程 我不希望发生错误 因为多个线程可能同时访问同一个对象
  • pandas 使用查询功能检查列是否为空

    我有 pandas 数据框 我想在它的查询函数上执行 isnull 或 not isnull 条件 如下所示 In 67 df data pd DataFrame a 1 20 None 40 50 In 68 df data Out 68
  • 是否可以防止出现文件对话框?为什么?

    假设我有输入 类型 文件 元素 我想拦截 onclick 事件并防止在不满足条件时出现文件对话框 是否可以 如果不是的话 为什么 Soufiane 的代码要求您的页面上有一个名为 jQuery 的 Javascript 库 如果您没有 您可
  • 从 Get-ChildItem -Path 返回对象数组

    从 powershell 开始 ls R txt将按目录递归列出文件 或者更好 PS gt Get ChildItem Path C Test Name logs anotherfile txt Command txt CreateTest
  • 使用 EntityFramework 使用空参数值调用存储过程

    我在 sqlserver 2008 上有一个存储过程 其中一个参数接受空值 我不知道如何使用参数上的空值来调用该 SP 为了获得更多上下文 我正在使用 EntityFramework 6xx 在下一个示例中 参数 status Compat
  • 为什么 VB.NET 和 C# 中针对值检查 null 存在差异?

    In VB NET http en wikipedia org wiki Visual Basic NET有时候是这样的 Dim x As System Nullable Of Decimal Nothing Dim y As System
  • 在 Java 中打开现有文件并关闭它。

    是否可以在java中打开一个文件附加数据并关闭多次 例如 psuedocode class variable declaration FileWriter writer1 new FileWriter filename fn1 writer
  • ruby 中的 unshift + file.join

    unshift File join File dirname FILE vendor addressable 2 1 0 lib addressable uri 上面的代码是否访问具有以下路径的文件 vendor addressable 2
  • 移动文件并覆盖[重复]

    这个问题在这里已经有答案了 即使同名文件已存在 我也尝试移动文件 NSFileManager moveItemAtURL location1 toURL location2 Does NSFileManager的方法moveItemAtUR
  • 如何在Ireport中给出多选参数空值的条件?

    我正在使用以下方法编写报告iReport http en wikipedia org wiki JasperReports Third party tools我想在其中添加空值条件 它使用单选选项 city P p city or P p

随机推荐

  • 关于退出进程的几种方式

    创建于 2012 08 27 迁移自个人的百度空间 HUP 是让进程挂起 睡眠 kill 杀掉进程 term 正常的退出进程 kill HUP pid pid 是进程标识 如果想要更改配置而不需停止并重新启动服务 请使用该命令 在对配置文件
  • 深入理解MyBatis一级缓存和二级缓存【超详细源码解析】

    视频地址 https www bilibili com video BV1nP411A7Gu MyBatis的缓存是一个常见的面试题 一级缓存的作用域为何是 sqlSession 二级缓存的作用域为何是 mapper 怎么理解 一 二级缓存
  • Go实现单例模式

    非线程安全的单例模式 type Singleton struct var instance Singleton func GetInstance Singleton if instance nil instance Singleton re
  • 【待续】【UE4笔记】 L10地形编辑器

    一 地形界面 包含了管理 雕刻和描画功能 1 创建新项 2 雕刻 改变地形高度 顶点位置 3 描画 分层地形材质 二 编辑样条 调节参数 添加材质 效果如下
  • 极限多标签学习综述(Extreme Multi-label Learning)

    A Survey on Extreme Multi label Learning 先给地址 https arxiv org abs 2210 03968 博主曾整理过Multi Label Image Classification 多标签图
  • Docker下安装SVN

    1 搜索svn镜像 root VM 0 6 centos docker search svn 2 拉取svn server的docker镜像 root VM 0 6 centos docker pull docker io garethfl
  • Stable Diffusion Webui源码剖析

    1 关键python依赖 1 xformers 优化加速方案 它可以对模型进行适当的优化来加速图片生成并降低显存占用 缺点是输出图像不稳定 有可能比不开Xformers略差 2 GFPGAN 它是腾讯开源的人脸修复算法 利用预先训练号的面部
  • 分布式--redis基本数据结构及使用

    文章目录 redis常用5种数据结构 字符串常用操作 字符串使用场景 1 单值缓存 session共享等 2 对象缓存 3 简单的分布式锁 4 计数器 5 全局唯一序列号 hash结构常用操作 hash结构的使用场景 1 对象缓存 2 购物
  • SpringBoot+Vue如何写一个HelloWorld

    一 SpringBoot介绍 Spring Boot是一个用于创建独立且可执行的Spring应用程序的框架 它简化了基于Spring框架的应用程序的开发过程 并提供了一种快速和简便的方式来构建Java应用程序 Spring Boot提供了自
  • 5. 智能指针(等后续

    指针本质上是一个内存地址索引 代表了一块内存区域 能够直接读写内存 因为指针完全映射了计算机硬件 所以操作效率高 是C C 高效的根源 但是指针也会产生访问无效数据 指针越界或者内存分配不及时等导致的运行错误 内存泄漏 资源丢失等一系列问题
  • 最新Keil MDK下载安装

    百度网盘下载 Keil MDK MDK5 38a https pan baidu com s 1REHRICabWMn0gHp8bgroWQ pwd 1122 MDK5 37 https pan baidu com s 1eA5cSpvCY
  • SpringBoot微信小程序授权登录

    SpringBoot微信小程序授权登录 一 appId 1 1 自己是管理者 微信公众平台 申请或登录自己的微信小程序 在开发者管理中即可看到 2 2 自己是开发者 让管理员将自己加入到小程序开发者管理中 用管理者提供的appId和secr
  • 【Flink系列】配置管理rockmq-flink产生的rocketmq-client日志

    Flink任务集成了rockmq flink用于订阅消费rocketmq的消息 在任务运行过程中发现会在系统的 username logs rocketmqlogs目录下产生rocketmq client log日志 并且这个日志累积和滚动
  • OException parsing XML document from class path resource [beans.xml]

    项目场景 在学习spring的时候配置xml遇到了一个问题 问题描述 IOException parsing XML document from class path resource beans xml nested exception
  • 通过PAGE生成python GUI界面(用PAGE拖出需要的GUI界面)

    注 当前我的使用环境为windows10 64bit python v3 6 PAGE v4 14 Tcl v8 6 7 0 当前我定义一个目标 最终需要生成一个登录界面的GUI代码 如下 安装好各软件后 就可以运行PAGE来像VB一样所见
  • 【统一解决OpenCV+contrib编译过程中ippicv、face_landmark_model以及boostdesc/vgg_generated文件下载缓慢问题】

    统一解决OpenCV contrib编译过程中ippicv face landmark model以及boostdesc vgg generated文件下载缓慢问题 在编译过程中 ippicv face landmark model以及bo
  • python爬虫之爬取百度翻译

    使用python中requests模块就可以爬取 import requests post url https fanyi baidu com sug headers User Agent Mozilla 5 0 Windows NT 10
  • 【华为机试真题 Python】统计每个月兔子的总数

    目录 题目描述 输入 输出 示例 参考代码 题目描述 有一种兔子 从出生后第3个月起每个月都生一只兔子 小兔子长到第三个月后每个月又生一只兔子 例子 假设一只兔子第3个月出生 那么它第5个月开始会每个月生一只兔子 一月的时候有一只兔子 假如
  • 音视频简易播放器代码范例

    下面是一个简单的音视频播放器代码范例 使用Python语言和PyQt5框架 python import sys from PyQt5 QtCore import Qt QUrl from PyQt5 QtMultimedia import
  • fgets函数的理解

    fget函数的原型如下 char fgets char buf int n FILE fp 功能 从文件流读取一行 送到缓冲区 使用时注意以下几点 1 当遇到换行符或者缓冲区已满 fgets就会停止 返回读到的数据 值得注意的是不能用fge