gets函数的完美替代

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

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

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

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

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

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

可以看出fgets主要用来读取文件,若要读取键盘的话stream参数应为stdin
扫描二维码关注公众号,回复: 5535915 查看本文章
bufsize参数为能够读取的最大上限(值得注意的是,若该参数为n,则最多能读取n-1个字符)
将一直读取到换行符为止(包括换行符
故我们往往人为的将最后一个换行符转化为结束符
例如:

猜你喜欢

转载自www.cnblogs.com/chr1stopher/p/10533108.html
今日推荐