C语言的fgets 与 gets

               

今天在翻《C语言参考手册》查看文件操作的相关函数时,看到fgets() 与 gets()的一些“微妙”的地方

另外《C语言参考手册》是C程序员身边的一本非常好的“词典”,刚开始学习C的时候,或许用不上这书(只因为初学者对里面的内容看得不是很明白)但是觉得自己学到有一定程度的时候,这本书绝对是一本十分好的工具书!

题外话就到此为止,入正题:

这篇文章主要简单地说说 fgets() 和 gets()

首先看看函数原型:

char* fgets(char *s, int n, FILE *stream);char* gets(char *s);

一般使用 fgets函数,都是读取 文件当中的 n-1个字符到 s中,其实, 此函数还有一个很好的用处就是从标准输入流中读取字符串,而且不用担心输入的字符个数超出了字符数组的大小而导致溢出的问题!要怎样做呢?如下:

char    str[10];fgets(str, siezof(str), stdin);

而如果使用gets函数的话,就不能保证上述的问题不会出现(输入的字符个数超出了字符数组的大小而导致溢出)  不信你可以运行下面的代码:

char    str[10];gets(str);
当然你得输入 10个以上的字符才能看到问题


到这里,fgets()的好处就不用再详细说了。值得注意的是:谨记fgets()只读取n-1个字符所以,fgets()读取到换行符、文件尾或读完n-1个字符便会进行返回


           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值