【C库函数】fgets详解

目录

fgets

​函数基本原型 

参数讲解 

返回值

函数详解 


fgets

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

函数基本原型 

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

参数讲解 

参数stringnstream
解释存储字符串的位置存储字符串的最大个数(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)个字符并返回给str
	return 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()函数

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

  • 13
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱躺平的威威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值