【C库函数】fgets详解
目录
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详解相关推荐
- linux动态库注册函数,Linux动态库函数的详解
linux动态库函数的详解 加载动态库 void *dlopen(const char *filename, int flag); flag的可能值: rtld_lazy rtld_now rtld_ ...
- linux 动态库构造函数,Linux动态库函数的详解
Linux动态库函数的详解 加载动态库 void *dlopen(const char *filename, int flag); flag的可能值: RTLD_LAZY RTLD_NOW RTLD_ ...
- C语言库函数— qsort () 详解
目录 1. qsort()函数简介 1.1 函数原型 1.2 函数参数 2. 比较函数简介 2. 1 比较函数参数 2.2 比较函数使用 3. qsort()函数使用 3.1 整形数组排序 3.2 字 ...
- C51 基本函数、中断函数和库函数的详解
函数的定义和调用 此外,C51编译器本身还提供了丰富的库函数,用户可以根据需要随时调用,从而大大提高编程效率. 1. 函数的定义 函数定义的一般形式为: 函数类型 函数名(形参列表) { 局部变量定义 ...
- C 库函数 - fread()详解
头文件 stdio.h 描述 C 库函数 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流 stream 读取 ...
- C语言标准库函数 qsort 详解
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作. qsort包含在<stdlib.h>头文件中,此函数根据你给的比较条件 ...
- SHARC库函数cfft_mag详解
做了一个测试,主要是测试cfft_mag怎么计算的 for(i = 0; i < F_WLEN; i++){outFFTData[i].re = 1.3;outFFTData[i].im = 2 ...
- c语言库里的排序函数,C语言标准库函数qsort详解
1 函数简介 功 能: 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,int width,int (*fcmp)(con ...
- 【RS码2】RS码的BM迭代译码原理详解及MATLAB实现(不使用MATLAB库函数-代码见CSDN同名资源)
关注公号[逆向通信猿]更精彩!!! 理论基础 订阅<信道编码>专栏,首先查阅各子程序的详解 [有限域生成]本原多项式生成有限域的原理及MATLAB实现 [有限域除法]二元多项式除法电路原理 ...
最新文章
- 一个用户实体应该有它自己的实体验证,即一个实体应该有它的属性,方法,扩展属性及验证机制组成...
- python多边形裁剪
- matlab求xk符号解,matlab符号运算习题
- WPF 左侧菜单样式
- cks32和stm32_cks子,间谍,局部Mo子和短管
- 90后美少女如何过五关斩六将入职支付宝技术男团?
- qq html消息,类似于QQ新消息提醒-前端
- Memcached集成Spring缓存环境构建
- 关于小米8玩王者荣耀加载缓慢的情况
- php怎么创建以太坊钱包地址,php如何调用以太坊JSON-RPC接口创建钱包
- 机器学习基础:吴恩达vs贪心科技AI哪个更值得你选择?
- [POI2013]LUK-Triumphal arch【树形DP+二分答案】
- The run destination''''is not valid for Running the scheme
- S5p4418 启动配制分析
- 2019CCPC秦皇岛打铁(游)记
- 手机性能指标详细测试步骤【Android/IOS】
- php汉字转为拼音方法一
- php去掉字符串带逗号前面的字符,php 怎么去掉字符串最后一个逗号
- html中怎么让英文排版,css如何实现英文对话排版
- VScode安装及个性化插件设置