首页 > 其他 > 详细

gets函数的完美替代

时间:2019-03-14 20:28:31      阅读:454      评论:0      收藏:0      [点我收藏+]

众所周知 在C语言中scanf用来读取一行字符串时遇到空格或回车会停止

而若要读入一行带空格的字符串时 有些人会用gets来代替

 

然而,gets的最大问题在于:会读取超过数组长度上限个字符,而超出长度的字符会被读进其他未被分配的内存空间,如果这段空间已经有了数据,就会导致程序错误而中断

 

正是由于此缺陷,在C11标准中直接抛弃了gets,这个时候我们可以用fgets来替代gets

 

我们先看一下函数原型声明:
 

 

char *fgets(char *buf, int bufsize, FILE *stream);

 

可以看出fgets主要用来读取文件,若要读取键盘的话stream参数应为stdin

 

bufsize参数为能够读取的最大上限(值得注意的是,若该参数为n,则最多能读取n-1个字符)

 

将一直读取到换行符为止(包括换行符

 

故我们往往人为的将最后一个换行符转化为结束符

 

 

 

例如:

 

技术分享图片

 

gets函数的完美替代

原文:https://www.cnblogs.com/chr1stopher/p/10533108.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!