C语言中gets函数未被识别?

为什么visual studio不能识别出gets呢?预处理也导入了string.h呀

img

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);