本节来讲解关于gets函数的用法,在C语言中,除了用scanf,以%s接收字符串之外,还可以使用gets函数更方便的接收字符串。
其函数原型如下:
char *gets(char *str);
在包含 include <stdio.h>头文件的情况下,可以用gets直接往字符数组里接收字符串,我们通过观察函数原型,可以看到在gets中传入一个字符指针,也就是存放这个字符串的字符数组地址即可接收,需要主要的是,要保证能存的下。
其运行过程为:当执行gets函数时,程序会等待用户从键盘输入的字符串,一旦遇到结束标志,即回车,那么之前输入在缓冲区中的字符串则会一起输入到gets中str所指向的内存区域里。此过程与scanf函数类似,最主要的不同在于,scanf接收时的结束标志有空格和回车,而gets不包括空格。也就意味着gets可以接收空格本身作为内容的一部分。这在实际解题、开发过程中时很有用的。
下面看一个例子:
# include <stdio.h> int main(void) { char str[100] = "\0"; printf("请输入字符串:\n"); gets(str); printf("刚才输入的字符串是:\n"); printf("%s\n", str); return 0; }
当我们运行程序后,直接在程序中输入字符串,如www.dotcpp.com 则程序输出:
刚才输入的字符串是: www.dotcpp.com
大家可以自行尝试,需要注意的是gets不会检查输入的字符串长度,即可能超出字符串数组的长度造成内存溢出,这其实也是gets函数不安全的原因,其已经在不少OJ中不允许使用。详情可以阅读文章 为什么gets函数不能用了?
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程