目录

fgets

​函数基本原型

参数讲解

返回值

函数详解


fgets

        是一个可以从标准流中获取字符串的函数

函数基本原型

char *fgets( char *string, int n, FILE *stream );

参数讲解

参数 string n stream
解释 存储字符串的位置 存储字符串的最大个数(n-1)   指向读取的流

stream在使用中一般会写为stdin,意为标准输入流(standard input )

返回值

成功返回字符串,错误或文件结束条件返回NULL。

使用 feof 或 ferror 来确定是否发生错误。

函数详解

fgets()函数并不是一直在标准输入流中一直读取字符的,当遇到‘\0’或是读取字符等于n-1,就会停止。

那什么fgets()函数在标准输入流中最多读取n-1个字符,而为什么不是n个字符呢?

我的理解是每次fgets读取字符时都会在最后添加一个空字符(‘\0’)以构成一个字符串。

我们看下面的代码

#include<stdio.h>
int main()
{char str[10];//定义一个字符型数组fgets(str, 5, stdin);//从stdin中最多读取(5-1)个字符并返回给strreturn 0;
}

当我输入7个字符‘abcdefg’时,str数组中存放则是 5个字符,分别为‘a’ ‘b’ ‘c’ ‘d’ ‘\0’。

当我们输入小于n-1个字符时也就是说fgets()在达到字符最大数目之前读完一行,这是它会把‘\n’也当做字符串一部分存起来,并在最后添加一个‘\0’。这也是fgets()函数与gets()函数最根本的区别

废话不多说,直接上代码演示

#include<stdio.h>
int main()
{char str[10];fgets(str, 5, stdin);return 0;
}

当我输入两个字符‘a’ ‘s’时,str中就会出现‘\n’的身影

这一点也是我们需要注意的

这里我放一道题的链接,希望大家可以尝试去使用fgets()函数

题目入口: 计算某字符出现次数

【C库函数】fgets详解相关推荐

  1. linux动态库注册函数,Linux动态库函数的详解

    linux动态库函数的详解 加载动态库 void *dlopen(const char *filename, int flag); flag的可能值: rtld_lazy rtld_now rtld_ ...

  2. linux 动态库构造函数,Linux动态库函数的详解

    Linux动态库函数的详解 加载动态库 void *dlopen(const char *filename, int flag); flag的可能值: RTLD_LAZY RTLD_NOW RTLD_ ...

  3. C语言库函数— qsort () 详解

    目录 1. qsort()函数简介 1.1 函数原型 1.2 函数参数 2. 比较函数简介 2. 1 比较函数参数 2.2 比较函数使用 3. qsort()函数使用 3.1 整形数组排序 3.2 字 ...

  4. C51 基本函数、中断函数和库函数的详解

    函数的定义和调用 此外,C51编译器本身还提供了丰富的库函数,用户可以根据需要随时调用,从而大大提高编程效率. 1. 函数的定义 函数定义的一般形式为: 函数类型 函数名(形参列表) { 局部变量定义 ...

  5. C 库函数 - fread()详解

    头文件 stdio.h 描述 C 库函数 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流 stream 读取 ...

  6. C语言标准库函数 qsort 详解

    文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件 ...

  7. SHARC库函数cfft_mag详解

    做了一个测试,主要是测试cfft_mag怎么计算的 for(i = 0; i < F_WLEN; i++){outFFTData[i].re = 1.3;outFFTData[i].im = 2 ...

  8. c语言库里的排序函数,C语言标准库函数qsort详解

    1 函数简介 功 能: 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(con ...

  9. 【RS码2】RS码的BM迭代译码原理详解及MATLAB实现(不使用MATLAB库函数-代码见CSDN同名资源)

    关注公号[逆向通信猿]更精彩!!! 理论基础 订阅<信道编码>专栏,首先查阅各子程序的详解 [有限域生成]本原多项式生成有限域的原理及MATLAB实现 [有限域除法]二元多项式除法电路原理 ...

最新文章

  1. 一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成...
  2. python多边形裁剪
  3. matlab求xk符号解,matlab符号运算习题
  4. WPF 左侧菜单样式
  5. cks32和stm32_cks子,间谍,局部Mo子和短管
  6. 90后美少女如何过五关斩六将入职支付宝技术男团?
  7. qq html消息,类似于QQ新消息提醒-前端
  8. Memcached集成Spring缓存环境构建
  9. 关于小米8玩王者荣耀加载缓慢的情况
  10. php怎么创建以太坊钱包地址,php如何调用以太坊JSON-RPC接口创建钱包
  11. 机器学习基础:吴恩达vs贪心科技AI哪个更值得你选择?
  12. [POI2013]LUK-Triumphal arch【树形DP+二分答案】
  13. The run destination''''is not valid for Running the scheme
  14. S5p4418 启动配制分析
  15. 2019CCPC秦皇岛打铁(游)记
  16. 手机性能指标详细测试步骤【Android/IOS】
  17. php汉字转为拼音方法一
  18. php去掉字符串带逗号前面的字符,php 怎么去掉字符串最后一个逗号
  19. html中怎么让英文排版,css如何实现英文对话排版
  20. VScode安装及个性化插件设置

热门文章

  1. 百度高德地图poi数据获取-下载
  2. 四.redis的基础+实战
  3. python.pandas.DataFrame行转列
  4. 倒霉的一天 新的开始
  5. 关于老子的五个关键思考
  6. 关于计算机在护理专业中的应用论文,护理管理计算机信息技术研究论文
  7. python有哪些库可以读写内存_使用Python学习win32库进行内存读写
  8. 申通 圆通 快递发货的运费计算方式
  9. boost库学习之时间日期
  10. nodejs+vue 微信小程序的外卖点餐平台