`gets` 是一个C语言中的库函数,用于从标准输入(通常是键盘)读取字符串并存储在字符数组中。
然而,由于这个函数存在安全风险,因此在现代的C编程实践中,它已经被标记为不安全并被废弃。
其主要问题在于它不会自动检查缓冲区的大小,因此可能会导致缓冲区溢出的问题。
例如,假设我们有一个字符数组 `char buffer[5];` ,然后调用 `gets(buffer)`。
如果输入超过数组的大小(在本例中为五个字符),会发生缓冲区溢出,可能会覆盖其他内存区域,引发各种难以预测和调试的问题。
这样的安全漏洞经常被恶意攻击者利用,对系统和数据造成严重损害。
因此,在编程时应当避免使用此类不安全函数。
安全的替代函数包括 `fgets` 和 `scanf` 等。