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函数的理解 的相关文章

  • iPhone 存储图像的最佳方式

    我正在开发一个应用程序 需要缓存一些来自网络的图像 图像可能是 100x100 我只需要知道哪个更好 将图像作为文件存储在 iPhone 文件系统中 将它们作为 blob 与已保存在数据库中的其他数据一起存储在 sqlite 数据库中 感谢
  • 如何使用socket.io处理节点服务器上的并发文件写入请求

    如何使用 socket io 处理节点服务器上的并发文件写入请求 我用这个来写 fs writefile abc txt datatobewritten utf8 function err 我有一个文件 abc txt 假设两个用户尝试同时
  • C# 中成员访问中的问号是什么意思?

    有人可以向我解释一下以下代码中会员访问中的问号是什么意思吗 它是标准 C 的一部分吗 尝试在 Xamarin Studio 中编译此文件时出现解析错误 this AnalyzerLoadFailed Invoke this new Anal
  • 使用 .NET 删除目录中超过 3 个月的文件

    我想知道 使用 C 如何删除某个目录中超过 3 个月的文件 但我想日期期限可以很灵活 需要明确的是 我正在查找超过 90 天的文件 换句话说 应保留 90 天前创建的文件 并删除所有其他文件 像这样的事情不能做 using System I
  • 空合并运算符分配给 self

    我目前在 Unity 中设置了两个脚本来处理一些 UI 音频 一个是管理器 另一个是为特定 UI 元素播放声音 我所拥有的简化版本是这样的 public class AudioUIManager MonoBehaviour Only one
  • 如何在 Laravel 中使用 Storage::facade 检查目录是否存在?

    对应的是什么 if File exists path using Storage 在 Laravel 5 1 中 Anyone 尝试这个 To check if File exists in Laravel 5 1 exists Stora
  • Byte[] 和 java.lang.OutOfMemoryError 按位读/写文件

    我正在努力擦除 Android 中的一些可用空间 这是我的代码 private void creatingFileDelete int size int passMode File lastFile new File Environment
  • 什么进程正在使用给定的文件?

    我的一个脚本遇到了问题 它似乎无法规律地写入自己的日志 并抛出错误 此文件正在被另一个进程使用 我知道有一些方法可以用 try excepts 来处理这个问题 但我想知道why这种情况正在发生 而不仅仅是掩盖它 根本不应该有任何其他东西访问
  • 删除目录中的文件,其中匹配模式的数量低于Linux上的阈值[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我怎样才能删除所有 txt目录中的文件 其中grep gt wc l小于2 Example file1 txt gt BB gt AA
  • 检查 SQL MAX() 函数返回 null

    我的问题是 如果我的表为空或者我使用 max 函数的列没有我指定的值 那么为什么 sqlDataReader hasRows TRUE 它给出了空记录 我该如何解决这个问题 提前致谢 像 MAX 这样的聚合函数将始终为每组返回一行 就您而言
  • 使用空合并运算符的独特方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我知道使用的标准方法空合并运算符 https en wikipedia org wiki Null coalescing operator在C
  • 无法使用 Node.JS 将 null 值发送到 MySQL 数据库

    我正在尝试发送null使用 Node JS 到我的 MySQL 数据库 con query INSERT INTO Routes routeTrigger VALUES null title test function err result
  • JavaScript 将 NULL 转换为 0

    我正在使用 jQuery 来获取元素的高度 但如果该元素不存在 以下代码将返回 NULL height menu li active ul height returns integer or null 这是一种跨浏览器安全的方法 可以使用以
  • 比较方法在对文件进行排序时违反了其一般契约

    我知道这种异常有很多问题 而且我确实找到了解决方案 但我的问题是不同项目中的相同代码不会抛出异常 而这个却抛出异常 这两个项目都具有相同版本的 Java 和其他库 基本上我有一个小函数 它从目录中检索文件列表 按时间戳对它们进行排序 然后返
  • 使用桌面的默认应用程序打开存储在 jar 文件中的 PDF 文件

    我的计算机科学课程的程序开发即将结束 然而 要求之一是应用程序内有一份用户手册 我在 Eclipse 工作区中将用户手册保存为 PDF 它存储在 Documents PDF Manual pdf 下 我最初使用这段代码 URL url ge
  • 如何在 Go 中表示可选字符串?

    我希望建模一个可以有两种可能形式的值 不存在或字符串 执行此操作的自然方法是Maybe String or Optional
  • 检查字符串中是否存在所有字符值

    我目前正在做这项任务 但我被困住了 目标是读取文件并查找文件中的字符串中是否存在这些字符值 我必须将文件中的字符串与作为参数放入的另一个字符串进行比较 但是 只要每个字符值位于文件中的字符串中 那么它就 匹配 示例 输入和输出 a out
  • 删除指针后将其设为 NULL 是一个好习惯吗?

    我首先要说的是 使用智能指针 您将永远不必担心这个问题 下面的代码有什么问题 Foo p new Foo use p delete p p NULL 这是由答案和评论 https stackoverflow com questions 19
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • 回形针不支持 .doc 文件

    在 Rails 4 0 2 中 我使用回形针 gem 上传文件 但它不支持 doc 文件 在文件上传字段下方 显示一条错误消息 扩展名与其内容不匹配 在模型中 检查内容类型的验证如下 validates attachment content

随机推荐

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

    创建于 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