在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';
希望这个解答对您有所帮助!