Dotcpp  >  编程教程  >  C语言中的基本输入输出  >  C语言字符串接收函数gets的用法

C语言字符串接收函数gets的用法

点击打开在线编译器,边学边练

本节来讲解关于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函数不能用了?


本文固定URL:https://www.dotcpp.com/course/915

C语言教程
第一章 C语言的过去与未来
第二章 C语言快速入门
第三章 C语言的数据类型
第四章 C语言中的基本输入输出
第五章 C语言运算符和表达式
第六章 C语句和程序流
第七章 C语言函数
第八章 C语言数组
第九章 C语言指针
第十章 C语言结构体和共用体
第十一章 C语言文件操作
第十二章 C语言预处理
第十三章 C语言位运算
第十四章 附录
Dotcpp在线编译