为什么visual studio不能识别出gets呢?预处理也导入了string.h呀
C语言中的 gets 函数已经被标记为不安全,因为它无法保证输入缓冲区不会溢出,这可能会导致安全漏洞。所以现代编译器,如 Visual Studio 已经将其废弃并禁用了。
所以,可以考虑使用 fgets 函数来代替 gets 函数,fgets 函数向字符指针读取一行字符串,也可以用来输入多行字符串。
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
fgets(str, sizeof(str), stdin); // 用 fgets 函数来代替 gets 函数
printf("You entered: %s\n", str);
return 0;
}
假如你仍然想使用gets() ,开头定义 _CRT_SECURE_NO_WARNINGS 宏来关闭安全检查。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
gets(str); // 可以使用 gets 函数
printf("You entered: %s\n", str);
return 0;
}
VS里要使用gets_s,因为gets不安全,scanf也有这种情况
改用:gets_s(string, 81);