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

今天在C代码中使用gets()时提示“warning: this program uses gets(), which is unsafe.”,然后这个程序还能运行,无聊的我开始查阅资料,为啥gets()会unsafe呢。

通过Google查阅前辈的问答,原来是这么回事。

gets()这个函数只有一个参数,那就是字符缓冲区的指针,并没有指定该缓冲区的长度也就是大小。当你输入一个很长很长的字符串的时候,gets ()函数会把每一个字符都存入到栈(statck)中,因此当字符串很大的时候就会导致程序异常终止。前辈们给的建议是使用fgets()函数替代gets()。

例子:

//使用gets()

char buffer[4096];

gets(buffer);

//使用fgets()替换gets()

char buffer[4096]; 

fgets(buffer, (sizeof buffer / sizeof buffer[0]), stdin);

参考网址:

1、Stackoverflow

时间: 2024-09-30 09:17:49

c中使用gets() 提示warning: this program uses gets(), which is unsafe.的相关文章

VC2015提示warning C4996: 'MBCS_Support_Deprecated_In_MFC': MBCS support in MFC is dep

当碰到这个警告时,查到原因如下: 1>  CollisionModel_contacts.cpp1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\afx.h(38): warning C4996: 'MBCS_Support_Deprecated_In_MFC': MBCS support in MFC is deprecated and may be removed in a future vers

mac 连接mysql提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory

mac 连接mysql的时候提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory [说明1]MAC下MYSQL的安装路径:/usr/local/mysql-5.5.28-osx10.6-x86 数据库的数据文件在该目录的data文件夹中: 命令文件在bin文件夹中. [说明2]通过终端打开MYSQL命令行的方法:/usr/local/mysql-5.5.28-osx10.6-x86/bin/mysq

U盘安装centos 7 提示 “Warning: /dev/root does not exist

如图:安装centos 7时提示 "Warning: /dev/root does not exist, could not boot" 这个问题是没有找到U盘,这个配置是需要在上一步需要完成的,但在上一步我们并不知道U盘的文件名,所以索性在这一步查看一下U盘的设备名,然后再回到上一步完成配置. 在dracut界面中查看/dev目录下移动硬盘的盘符 #一般有sdb和sdb#,#是数字,例如sdb4 ls /dev 可看到硬盘信息:我的U盘是sdb4确认盘符之后reboot回到安装选择界

Advanced Installer 中测试数据库连接提示“未发现数据源名称并且未指定默认驱动程序”的解决办法

原文:Advanced Installer 中测试数据库连接提示"未发现数据源名称并且未指定默认驱动程序"的解决办法 最近需要制作一个安装包,安装包的要求如下: 1.用户手工填写MySql的地址.用户名和密码 2.填写完成后提供测试数据库连接是否正常的按钮功能 3....... 项目要求打包的Mysql版本为5.5.27 x64版本,通过研究Advanced Installer 发现,此打包工具提供了数据库连接字符串,并且是通过ODBC的方式来连接的,既然是安装的64位的数据库,那么连

MFC中添加ToolTip提示框

PART 1 MFC 对话框中的 Buttton添加提示 例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下: 1. 在该对话框的类中添加一个CToolTipCtrl类型成员,并在适当的地方将其初始化如下: m_ToolTipCtrl.Create(this); m_ToolTipCtrl.AddTool(GetDlgItem(IDC_BUTTON1), _T("This is ToolTip")); m_ToolTipCtrl.SetMaxTipWidt

C-Free中出现错误stray '\161' in program

运行程序后出现如下报错: 这是因为代码中有不合法的空格,从网上直接复制代码到C-Free时就经常会出现这种情况,把不合法的空格删除即可. C-Free中出现错误stray '\161' in program

MyEclipse中设置智能提示

在实际的开发当中,编译器没有智能提示,确实是效率很低,下面我就给大家讲一下在MyEclipse中设置智能提示,方便大家的开发,希望能帮到大家. 方法一:首先,在MyEclipse的菜单栏中找到window→Preferences→Java→Editor→Content Assist, 然后将Auto activation delay 的数值改为一个较小的数值,比如说20,默认是200,再把Auto activationtriggers for Java 的值"."改为".ab

ubuntu 安装maven提示出错 The program 'mvn' can be found in the following packages

问题: I am trying to install apache maven 3 in Ubuntu 12.04 lts. What I did was open the terminal then I typed the following commands export M2_HOME=/usr/local/apache-maven/apache-maven-3.0.5 [Then pressed Enter] export M2=$M2_HOME/bin [Then pressed En

ubuntu 安装maven提示出错 The program 'mvn' can be found in the following packages

问题: I am trying to install apache maven 3 in Ubuntu 12.04 lts. What I did was open the terminal then I typed the following commands export M2_HOME=/usr/local/apache-maven/apache-maven-3.0.5 [Then pressed Enter] export M2=$M2_HOME/bin [Then pressed En