我在新安装的Visual Studio Community 2015 IDE中遇到了编译器错误(c3861):
我只想使用stdio.h
库中的gets()函数,并已将stdio.h
文件包含在我的程序中,但编译器显示了如下的编译器错误:
error C3861: 'gets': identifier not found
我该怎样使用gets()
函数才能正确编译我的程序。
我在新安装的Visual Studio Community 2015 IDE中遇到了编译器错误(c3861):
我只想使用stdio.h
库中的gets()函数,并已将stdio.h
文件包含在我的程序中,但编译器显示了如下的编译器错误:
error C3861: 'gets': identifier not found
我该怎样使用gets()
函数才能正确编译我的程序。
从C11开始,gets
被gets_s
替换。 gets()函数不执行边界检查,因此该函数极易受到缓冲区溢出的攻击。建议使用替代函数gets_s()
或fgets()
。
gets_s(buf);
fgets(buf, sizeof(buf), stdin);
gets
函数可能导致缓冲区溢出,被认为太危险了,因此在最新版本的C和C++中已经被删除。
应该使用fgets
代替。使用该函数可以将输入限制在缓冲区的大小范围内。
gets
和_getws
在VS 2015中被移除,因为这些函数已经过时。
替代函数是gets_s
和_getws_s
。
int main() {
char file_name[30];
cout << "Enter file name:";
gets_s(file_name);
cout << endl << "Selected file : "<< file_name;
return 0;
}
gets()
函数进行竞赛编程。 - maruf