c++未定义标识符gets

在C++中,函数 gets() 已经被废弃并从C++11标准起已被删除,因此您在使用时可能会遇到 "未定义标识符gets" 的错误。

这是因为 gets() 函数存在严重的缓冲区溢出问题,可能导致安全漏洞。为了避免这种情况,C++标准库提供了 fgets() 函数作为替代品。

要使用 fgets() 函数,您需要包含 <cstdio> 标准头文件,并使用以下代码:

char str[100];
fgets(str, 100, stdin);

其中,第一个参数是指向存储输入的字符数组的指针,第二个参数是最大读取字符数,第三个参数是输入流。在这里,我们使用标准输入流 stdin

请注意,fgets()函数会读取换行符,因此您需要将其从字符串中删除。以下是示例代码:

char str[100];
fgets(str, 100, stdin);
// 删除换行符
int len = strlen(str);
if (len > 0 && str[len-1] == '\n') {
    str[len-1] = '\0';

希望这个解答对您有所帮助!

  •