如果你在尝试使用 gets 函数时遇到问题,很可能是因为以下几个原因: 编译器不支持:许多现代的 C 编译器已经不再支持 gets 函数,因为它可能导致缓冲区溢出等安全问题。 标准库更新:随着 C 语言标准的更新,一些不安全的函数被逐渐淘汰。gets 函数就是其中之一。 替代函数:为了替代 gets,你可以使用 fgets 函数。fget...
在提交问题时,不少接收字符串的时候可以用gets函数(以前确实可以),但由于get函数不提供给出足够长的输入字符串时,避免目标数组缓冲区溢出的手段。 std::gets 于 C++11 被弃用,并于 C++14 移除。 可使用 std::fgets 替代。也就是说现在只要用C++11及以后版本的标准,gets函数都不能再用了 不过,我们可以使用#d...
C++中不再推荐使用gets()函数的原因是因为它存在安全漏洞。gets()函数用于读取用户输入的字符串,但它没有提供缓冲区溢出保护机制,这可能导致缓冲区溢出攻击。缓冲区溢出是一种常见的安全漏洞,攻击者可以利用它来修改程序的内存内容,执行恶意代码或者破坏程序的正常执行流程。 为了解决这个问题,C++标准库提供了更安全的...
不安全:由于 gets()不能指定输入数据的长度,它无法防止输入的数据过长导致缓冲区溢出。这使得 gets...
C++中的gets函数已经被弃用,因为它不能有效处理输入溢出,容易导致缓冲区溢出攻击。更安全的替代方案是使用fgets函数,它可以指定缓冲区大小,从而防止溢出。例如:正确的输入方式应该是:char str[100];fgets(str, 100, stdin);此外,C++11引入了std::getline函数,它在读取输入时会自动处理换行符,提供...
为什么gets语句我..gets函数已经被标记为obsolete,不应该使用。msvc和glibc都已经移除了gets,但mingw暂时还保留着,所以你仍然可以在dev c++中使用gets。即便如此,也不鼓励使用它,应该用
在2023年,仍然有开发者提出关于`gets()`的问题,这反映出国内外计算机基础教育的不足。长期存在的祖传代码,加上缺乏对攻击防范的意识,导致开发者使用旧版工具链、忽略编译器警告、不积极更新系统等行为。这些做法降低了软件的安全性,增加了被攻击的风险。综上所述,C标准库删除`gets()`是为了提高...
C11声明不建议用gets,gets有漏洞,部分编辑器不可以运行,部分可以运行但是会报错
gets只能对字符串使用,a是一个字符变量,应该用getc 暗影大帝space < 11 DEV的朋友好 暗影大帝space < 11 gets是字符串读取,读到换行为止你可以换成scanf (“%c”,a) 醴曩 throw 3 gets已从c11标准删除,但编译器不是完全按标准来的,可以继续用,你这个错误不是gets的问题,实参传递错了 snjtie throw...