fgets()

2023-10-29

 

fgets()函数简介

读字符串函数fgets()的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针),要从键盘输入时文件指针的参数为:stdin ; 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志'/0'

示例分析

fgets()函数通过2个参数限制读入的字符数来解决溢出的问题。该函数专门设计用于处理文件输入,所以一般情况下可能不太好用。fgets()和gets()的区别如下:

  • fgets()函数的第2个参数指明了读入字符的最大数量。如果该参数的值是n,那么fgets()将读入n-1个字符,或者读到遇到第一个换行符为止。
  • 如果fgets()读到一个换行符,会把它存储在字符串中。这点与gets()不同,gets()会丢弃换行符。
  • fgets()函数的第三个参数指明要读入的文件。如果读入从键盘输入的数据,则以stdin(标准输入)作为参数,该标识定义在stdio.h中。

因为fgets()函数把换行符放在字符串的末尾(假设输入行不溢出),通常要与fputs()函数(与puts()类似)配对使用,除非该函数不在字符串末尾添加换行符。fgets()函数的第3个参数指明它要写入的文件,如果要显示在计算机显示器上,应使用stdout(标准输出)作为该参数。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #define N 10
 5 
 6 int main()
 7 {
 8     char a[N];
 9     char * p;
10     
11     printf("input string:\n");
12     fgets(a,sizeof(a),stdin);
13     
14     if ((p=(strchr(a,'\n')))!=NULL)/*fgets不会像gets那样自动地去掉结尾的\n,所以程序中手动将\n位置处的值变为\0,代表输入的结束。*/ 
15     {
16         *p=0;
17     }
18     
19     printf("string is:\n%s",a);
20     
21     return 0;
22 }

 

转载于:https://www.cnblogs.com/hemeiwolong/p/9095942.html

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

fgets() 的相关文章

  • leetcode704. 二分查找

    给定一个 n 个元素有序的 升序 整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target 如果目标值存在返回下标 否则返回 1 示例 1 输入 nums 1 0 3 5 9 12 target 9输出
  • 计算机缺失d3dcompiler43.dll,电脑d3dcompiler43.dll文件丢失怎么解决?

    最近有很多小伙伴在使用win7系统的时候 遇到了系统提示d3dcompiler43 dll文件丢失的问题 那么 这个问题该怎么解决呢 这种文件的丢失一般影响到玩游戏 因为文件没有及时的更新 其实只要我们重新网上下载同一个该文件就可以了 下面
  • 编程的:23种设计模式

    color red 1 工厂模式 客户类和工厂类分开 消费者任何时候需要某种产品 只需向工厂请求即可 消费者无须修改就可以接纳新产品 缺点是当产品修改时 工厂类也要做相应的修改 如 如何创建及如何向客户端提供 color color gre
  • Ubuntu18.04配置darknet环境实现YOLOv4目标检测(五)——darknet YOLOv4和YOLOv4-tiny模型转ONNX转TensorRT部署

    文章目录 1 github开源代码 2 darknet模型转ONNX模型 3 ONNX模型转TensorRT模型 3 1 概述 3 2 编译 3 3 运行 4 推理结果 1 github开源代码 开源代码位置在这里 darknet转ONNX
  • 基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(一)简介

    笔者写的这个教程集 是一项带引号的 翻译 类教程 Joey De Vries 的现代OpenGL教程是我看过最好的图形学教程 没有之一 这是教程地址https learnopengl cn github io 01 20Getting 20
  • Polyman 初使用-01

    软件安装很easy 不赘述 启动软件 打开 edf文件 左侧是不同的通道名称 每页是一个epoch 也就是 30s 左下角的三角可以翻页 速度有点慢 我们可以拖动右上方方框里的白色竖条进行时间拉伸 红色填充是每个阶段的标签 这个是额外引入的
  • 由于您访问的url有可能对网站造成安全威胁_Web常见安全漏洞-XSS攻击

    XSS攻击 跨站脚本攻击 Cross Site Scripting 为了不和层叠样式表 Cascading Style Sheets CSS 的缩写混淆 故将跨站脚本攻击缩写为XSS XSS是一种常见的web安全漏洞 它允许攻击者将恶意代码
  • 区块链风暴来袭,这五大行业将受到强烈冲击

    自从第一枚比特币诞生以来 加密货币就代表了经济实现重大飞跃的一次机会 尽管比特币出现了 没有中心化的机构 并且成为了传统货币的数字化选择 驱动加密货币运作的底层计算机协议则是从之后才被认为具备大量其他的应用场景 从分布式账本的不可更改性到加
  • salt-key收集的主机名与实际主机名不一致

    salt key收集的主机名与实际主机名不一致 一 问题背景 root host 39 108 217 12 minions salt key L iZbp150ikdomqe3b32qaubZ izwz9f8xrvty50quc2gq50
  • Redhat6.5安装vnc服务远程桌面

    环境 操作系统 Redhat6 5 已安装桌面 远程工具 Xshell6 VNC服务 可以远程将桌面输出 tigervnc tigervnc server ssh远程到服务器之后 yum安装tigervnc tigervnc server
  • CKA认证题型解析

    文章目录 0 前言 1 RBAC 授权 2 节点设置不可用 3 升级 K8s 版本 注意 4 etcd 备份与恢复 5 网络策略 查看官网 NetworkPolicy 6 SVC 暴露应用 7 Ingress 查看官网 ingress 8
  • unix环境高级编程——进程间通信之管道

    本期主题 unix环境高级编程 进程间通信之管道 管道 1 什么是管道 1 定义 2 管道的局限性 2 进程管道 1 popen和pclose 2 使用popen的弊端 3 pipe函数 1 单进程管道通信 2 跨越fork调用的管道 4
  • 数字证书简介

    1 为什么 在说清楚数字证书是什么之前 先要搞清楚为什么要有数字证书 或者说数字证书的出现是为了解决什么问题 请看以下通信流程 1 1 使用数字签名技术防止信息伪造 1 1 1 发送明文信息 小灰灰给懒羊羊发了一条信息 约懒羊羊去玩 1 1
  • 自行获取区域经纬度的工具

    摘要 上一章教大家如何建立自己的行政区域地图 这次为大家提供一个 可视化选择区域 并且能自动生成经纬度代码的工具 工具的源代码完全公开 并且做了详尽的注释 可以单纯做为一个工具 也可做为百度地图API的学习案例 工具说明 1 开关可以控制
  • substring的常用两个方法

    概述 1 substring是用来截取字符串的 根据参数的个数不同 方法含义也不同 2 substring 0 2 这个只含开头不含结尾 因此截取是截取两个字符 从第一个到第二个字符 不包含第三个 3 substring 2 这个表示截掉前
  • javaweb-30:smbms项目搭建

    SMBMS 数据库 sql脚本 通过sqlyog图形化界面操作 在历史记录中对应相应的sql 表的引擎默认为InnoDB 字符集和核对默认和数据库一致 CREATE DATABASE smbms CHARACTER SET utf8 COL
  • java堆外内存泄漏分析排查

    JAVA堆外内存分析 文章目录 JAVA堆外内存分析 1 前言 2 准备 3 具体分析 3 1堆外溢出风险判断 3 1 1确认java进程号 3 1 2查看此java进程的jvm参数 3 1 3查看java进程的大概内存占用情况 3 1 4
  • bug: tab 标签页界面切换导致echarts图表默认宽度100px的问题

    bug tab 标签页界面切换导致echarts图表默认宽度100px的问题 最近在bootstrap中使用echarts 本来在一个页面显示全部图表时是正常的 后面使用tab标签页界面切换不同表格时碰到的一个echarts bug tab
  • 【CSDN开发云】光速认识Cloud IDE

    个人格言 时间是亳不留情的 它真使人在自己制造的镜子里照见自己的真相 Git专栏 Git篇 你的一键三连是对我的最大支持 CSDN最新产品 云IDE 来啦 云IDE 将为各位技术er一键秒级构建云开发环境 提升开发效率 为持续提升产品体验
  • javaScript数组方法记录——持续补充

    javaScript数组方法记录 将平时用到的或者可能用到的记录一下 有助于加深记忆 查找起来也方便 concat concat 方法用于 连接 两个或者多个 数组 会返回合并数组之后的数据 不会改变原来的数组 let a 张三 李四 赵五

随机推荐

  • DC基础学习(五)Verilog语言结构到门级的映射1

    Design Compiler 以下简称DC 是Synopsys公司用于做电路综合的核心工具 可以将HDL描述的电路转换为基于工艺库的门级网表 本系列主要介绍综合相关的知识以及DC工具的使用 Verilog编码效率的高低是综合后电路性能高低
  • 「Python 基础」网络编程、电子邮件

    文章目录 1 网络编程 TCP IP TCP 编程 服务端 客户端 UDP 编程 服务端 客户端 2 电子邮件 SMTP 发送邮件 POP3 收取邮件 1 网络编程 网络通信就是两个进程之间的通信 TCP IP IP 地址 计算机的网络接口
  • Nginx入门和反向代理

    文章目录 1 Nginx简介 2 Nginx在Linux上安装 2 1先去 nginx官网 http nginx org en download html 下载压缩包 2 2把压缩包上传到Linux中 2 3 安装依赖环境 2 4 解压 需
  • 一个Python示例,它演示了如何定义一个函数,计算两个数字的乘积

    一个Python示例 它演示了如何定义一个函数 计算两个数字的乘积 定义一个函数 计算两个数字的乘积 def multiply x y return x y 调用函数 并将结果存储在变量中 result multiply 5 10 输出函数
  • shell脚本实现C程序日志分流和多Terminal显示

    日志打印是软件必需的功能 通常C程序会将所有运行日志输出到指定LOG 一 有时候需要在C程序运行期间查看实时日志 最好地 可以根据关键字筛选自己想要查看的内容 二 有时候 希望另开Terminal去查看日志 而不是使用当前的Terminal
  • python怎么遍历文件夹_python遍历文件夹,指定遍历深度与忽略目录的方法

    背景 需要在文件夹中搜索某一文件 找到后返回此文件所在目录 用最常规的os listdir 方式实现了一版 但执行时报错 递归超过最大深度 于是自己添加了点功能 之所有写此函数是为了让它适应不同的项目 因为有项目要找的文件在第一层 有的在第
  • 趣味面试题

    趣味面试题集锦 最近看了不少关于求职面试的试题 在其中发现了不少有意思的题目 特整理后发表上来与大家一起分享 为了方便与以后添加的题目区别 每次更新会以 A B 的方式标注 A 1 如何将 a b 的值进行交换 并且不使用任何中间变量 解析
  • 【超详细】使用Git上传本地文件夹到GitHub main branch

    最近对Tensorflow Object Detection Tutorial进行更新 想把本地建好的文件夹上传到main brach而不是master brach 一 新建仓库 Repository 在GitHub上登陆你的账号 点击 N
  • qDebug 学习小结

    在qtcentre中看到有网友问这样一个问题 Why this doesn t work qDebug lt lt Test lt lt std endl 第一反应 这两个东西本来就不能这样搭配使用啊 第二反应 额 如何解释这个问题呢 还真
  • SQL基础教程系列_基于Postgresql_创建表时的中文乱码问题(附如何修改注册表更改dos encoding方式)

    创建表时的中文乱码问题 具体分为两种 一种是输入进去就不显示中文 第二种是当上传到服务器端会返回乱码 具体原因可以参考 http www cnblogs com winkey4986 p 6279243 html 一篇博客 及 http w
  • localStorage.getItem

    1 localStorage getItem WEB应用的快速发展 是的本地存储一些数据也成为一种重要的需求 实现的方案也有很多 最普通的就是cookie了 大家也经常都用 但是cookie的缺点是显而易见的 其他的方案比如 IE6以上的u
  • 【华为OD机试】最大花费金额 (C++ Python Java)2023 B卷

    题目描述 双十一众多商品进行打折销售 小明想购买自己心仪的一些物品 但由于受购买资金限制 所以他决定从众多心仪商品中购买三件 而且想尽可能的花完资金 现在请你设计一个程序帮助小明计算尽可能花费的最大资金数额 输入描述 输入第一行为一维整型数
  • 【AI with ML】第 1 章 :TensorFlow 简介

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 并发编程(三)——多线程之间如何实现通讯

    前言 欢迎大家一起来学习多线程 大家一起来学习吧 并发编程 一 多线程快速入门 并发编程 二 内存模型 并发编程 三 多线程之间如何实现通讯 并发编程 四 JUC并发包常用方法介绍 并发编程 五 线程池及原理剖析 并发编程 六 java中锁
  • 设置PWM占空比中TIM_SetCompare1,TIM_SetCompare2,TIM_SetCompare3,TIM_SetCompare4分别对应引脚和ADC通道对应引脚

    这个函数TIM SetCompare1 这个函数有四个 分别是TIM SetCompare1 TIM SetCompare2 TIM SetCompare3 TIM SetCompare4 位于CH1那一行的GPIO口使用TIM SetCo
  • leetcode-283-移动零

    移动零 给定一个数组 nums 编写一个函数将所有 0 移动到数组的末尾 同时保持非零元素的相对顺序 示例 输入 0 1 0 3 12 输出 1 3 12 0 0 说明 必须在原数组上操作 不能拷贝额外的数组 尽量减少操作次数 解法一 计算
  • STM32L4-RS485+DMA中断通信实验+字节丢失处理[寄存器版]

    基本设置 MCU采用 STM32L431RCT6 485芯片采用 ADM3485 采用串口经由RS485 使用DMA向串口调试助手传送数据 相关配置与前文基本相同 STM32L4 双路RS485自收发通信实验 寄存器版 staypt的博客
  • 我看鸿蒙操作系统

    华为宣布推出鸿蒙操作系统 其实我觉得能理解 但也蛮无奈的 所谓不得已而为之 google不提供后续版本授权 不提供新的支持 怎么办 硬着头皮也要上 有些自媒体说什么安卓慌了 google吓坏了 我真的想骂人 一群王八蛋为了点击率什么都敢写
  • 日志分析 入侵检测--实战

    收到客户服务器被入侵消息 希望我给他做一次入侵排查 刚做完顺手记录一下 入侵排查思路 0x01 日志分析 1 爆破ip统计 grep i Failed var log secure awk print NF 3 sort uniq c so
  • fgets()

    fgets 函数简介 读字符串函数fgets 的功能是从指定的文件中读一个字符串到字符数组中 函数调用的形式为 fgets 字符数组名 n 文件指针 要从键盘输入时文件指针的参数为 stdin 其中的n是一个正整数 表示从文件中读出的字符串