VS2015中使用gets()函数时报错的解决方法
gets()函数的作用是从输入流中读取数据。对于gets()函数的详细用法,请参考。在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()函数会从标准输入中读取字符串,直到遇到换行符“ ”时停止读取。之后,将读取到的字符串中的换行符“ ”替换为字符串结束符“ ”。
2.2.2 读取字符串错误
如果用于保存输入字符串的buffer参数是NULL,或者表示缓冲区大小的参数sizeInCharacters的值小于等于零,再或者缓冲区buffer的大小不能保存用户输入的字符串时,gets_s()函数会调用错误参数处理例程,程序会显示报错信息。