C/C++ C 中使用 gets() 提示 warning: this program uses gets(), which is unsafe.

harry · 2022-04-29 21:36:03 · 热度: 11

C 中使用 gets() ,编译时会出现如下警告:

warning: this program uses gets(), which is unsafe.

gets() 不安全是因为你给了他一个缓冲区,但是你却没有告诉它这个缓冲区到底有多大,也不知道输入的内容到底有多大,输入的内容可能超出缓冲区的结尾,引起你的程序崩溃。

解决方法可以使用 fgets 替代:

char buffer[bufsize];
fgets(buffer, bufsize, stdin);

实例:

// 使用 gets()
char buffer[4096];
gets(buffer);
 
// 使用 fgets() 替换 gets()
char buffer[4096];
fgets(buffer, (sizeof buffer / sizeof buffer[0]), stdin);

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册