VS2015中使用gets()函数时报错的解决方法

gets()函数的作用是从输入流中读取数据。对于gets()函数的详细用法,请参考《scanf()、gets()和getline()读取输入》。在VS2015中,使用gets()函数读取输入数据时,会显示“error C3861: “gets”: 找不到标识符”,即使程序中包含了stdio.h头文件。

1 gets()函数在VS2015中已过时

在MSDN中提到,在VS2015的CRT中已经不再使用gets()函数,而是使用该函数的安全版本gets_s()函数。

相关链接:CRT指的是C Runtiome Library,即C运行时库,定义了C程序运行时需要的函数。

2 gets_s()函数

2.1 函数定义

gets_s()函数是gets()函数的安全版本,其定义的格式为

char *gets_s( char *buffer, size_t sizeInCharacters );

其中,参数buffer用于保存输入的字符串,sizeInCharacters是buffer的大小。如果读取输入成功,gets()函数返回保存输入的内存的首地址,即buffer的地址;如果失败则返回值是NULL。

2.2 函数相关知识

2.2.1 读取字符串成功

gets_s()函数会从标准输入中读取字符串,直到遇到换行符“\n”时停止读取。之后,将读取到的字符串中的换行符“\n”替换为字符串结束符“\0”。

2.2.2 读取字符串错误

如果用于保存输入字符串的buffer参数是NULL,或者表示缓冲区大小的参数sizeInCharacters的值小于等于零,再或者缓冲区buffer的大小不能保存用户输入的字符串时,gets_s()函数会调用错误参数处理例程,程序会显示报错信息。

发布了314 篇原创文章 · 获赞 206 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/hou09tian/article/details/103438783
今日推荐