gpt4 book ai didi

c - 为什么gets 函数如此危险以至于不应该使用它?

转载 作者:太空狗 更新时间:2023-10-29 16:13:51 27 4
gpt4 key购买 nike

当我尝试编译使用 gets() 的 C 代码时与 GCC 一起使用,我收到此警告:

(.text+0x34): warning: the `gets' function is dangerous and should not be used.



我记得这与堆栈保护和安全性有关,但我不确定确切原因。

我怎样才能删除这个警告,为什么会有这样一个关于使用 gets() 的警告? ?

gets()这么危险,为什么我们不能删除它?

最佳答案

为了使用gets安全地,您必须确切知道您将读取多少个字符,以便您可以使缓冲区足够大。只有当您确切地知道您将阅读哪些数据时,您才会知道。
而不是使用 gets ,您要使用 fgets , 有签名

char* fgets(char *string, int length, FILE * stream);
( fgets ,如果它读取整行,会将 '\n' 留在字符串中;你必须处理它。) gets直到 1999 年 ISO C 标准,它仍然是语言的官方部分,但它被 2011 标准正式弃用,并在 2014 标准中删除。大多数 C 实现仍然支持它,但至少 gcc 会为使用它的任何代码发出警告。

关于c - 为什么gets 函数如此危险以至于不应该使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1694036/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com