C11中gets()的函数被删除
C11中替代gets()的函数
1、gets()函数及其存在的问题
在读取字符串时,scanf()和%s只能读取一个单词,即遇到 ’ ’ (空格)就会停止读取。在程序中经常需要读取一行字符串,而不是一个单词。在C11标准前,gets()函数就可以处理这种情况,读取整行输入,直到遇到换行符,就丢弃换行符,读入剩下的字符。
例如:
#include
int main(){
char words[100];
gets(words);
puts(words);
return 0;
}
INPUT
Hello World!
OUTPUT
Hello World!
但是,这里有一个严重的问题,gets()函数只有一个参数(words),gets函数只知道数组的开始地址,而不知道何时结束,因此当输入的字符串过长,就会导致缓冲区溢出问题。
2、gets()函数的替代品
1、fgets()
fgets(words,STLEN,stdin)
1、fgets()函数的第二参数指明了读入字符串的最长量,如果该参数为n,那么最多将会读入n-1个字符,或者读到换行符为止。
2、与gets()不同的是,fgets()会将读到的换行符存储在数组中,而gets()会丢弃换行符。
3、fgets()的第三个参数必须声明要读入的文件,如果从键盘读入,则声明为stdin作为参数,该标识符的定义在sdtio中。
如果我们不需要将换行符存储在数组中,那么可以将其处理掉:
int i=0;
while(words[i] != ‘\n’) i++;
words[i]=’\0’;
2、gets_s()
gets_s(words,STLEN)
1、gets_s()函数只从标准输入中读数据,因此它不需要第三个参数。
2、gets_s()也会丢弃换行符
如果读入的字符串没有超出存储长度,那么gets_s()和gets()是非常相似的,一旦超出了存储长度,gets()函数就会不安全,因为它会修改超出部分的内存,擦写现存的数据,而gets_s是安全的,一旦超出,就会自动调用“处理函数”,中止或退出程序。
转载于
C11中gets()的函数被删除相关推荐
- Python中的常用函数
1.range()是一个函数 for i in range () 就是给i赋值: 比如 for i in range (1,3): 就是把1,2依次赋值给i range () 函数的使用是这样的: r ...
- Pandas批量删除dataframe列名中的后缀实战:使用rstrip函数批量删除列名中的后缀(suffix)、使用replace函数批量删除列名中的后缀(suffix)
Pandas批量删除dataframe列名中的后缀实战:使用rstrip函数批量删除列名中的后缀(suffix).使用replace函数批量删除列名中的后缀(suffix) 目录
- Pandas批量删除dataframe列名中的前缀实战:使用lstrip函数批量删除列名中的前缀(prefix)、使用replace函数批量删除列名中的前缀(prefix)
Pandas批量删除dataframe列名中的前缀实战:使用lstrip函数批量删除列名中的前缀(prefix).使用replace函数批量删除列名中的前缀(prefix) 目录
- 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点
/*实验2 1. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点 (low和high的值是多少可自由设计).并且要在程序中验证其功能实现. (可在实验1的第3题的基 ...
- C语言函数题- 删除字符串中下标为i的字符
6-2 删除字符串中下标为i的字符 (10分) 本题要求实现一个函数,删除字符串中的下标为i的字符,i的值保证合法,即字符串一定存在下标为i的字符. 函数接口定义: void delstring ( ...
- C语言试题七之将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。
1. 题目 规定输入字符串中只包含字母和*号.请编写函数fun,它的功能是:将函数字符串中的前导*号全部删除,中间和尾部的*号不删除. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试 ...
- 26. 编写函数:删除一个字符串中的所有空格。
编写函数:删除一个字符串中的所有空格. #include <stdio.h> #include <string.h> #define MAX 100 void fun(char ...
- Python中可以使用字符串处理函数来删除指定的字符或者字符集合。在这篇文章中,我们将会介绍如何使用Python来删除一个或多个指定字符。作为标题,《用Pyth...
Python中可以使用字符串处理函数来删除指定的字符或者字符集合.在这篇文章中,我们将会介绍如何使用Python来删除一个或多个指定字符.作为标题,<用Python删除指定字符(Removing ...
- PHP数组函数 array_unique (删除数组中重复的值)
在PHP中,数组函数 array_unique () 用来移除数组中重复的值. 函数语法: array_unique ( array $array [, int $sort_flags = S ...
最新文章
- 常用地理数据平台及环境数据资源 (GIS)
- 关键字提取_从杂乱无章的表格中找出关键字,批量提取字符
- idea中生成mapper xml文件,快速从代码跳转到mapper及从mapper返回代码的插件安装
- “熊猫烧香”式的病毒营销
- 440. 字典序的第K小数字
- 电商美工中秋节电商淘宝页面设计模板素材,临摹参考框架
- Mac 开发使用中的小技巧收集
- 如何复现论文中的算法
- 系统详细设计过程指南
- Eclipse 设置保护色
- python高斯求和函数_选择积分方法—高斯积分
- Multi-Object Trackers
- gmail注册方法_如何在Gmail中释放空间:5种回收空间的方法
- 无人车路径规划与控制综述
- Three.js的uv坐标贴图理解
- 如何永久关闭笔记本键盘
- AppScan详细使用教程
- 利用 Python 爬取了近 3000 条单身女生的数据,究竟她们理想的择偶标准是什么?
- 内网渗透之Windows 系统下的目标信息收集
- 计算机管理找不到防火墙,手把手解答win10系统防火墙服务找不到的问题
热门文章
- python虚函数_virtual(虚函数) vtbl(虚函数表)与vptr(虚函数表指针)
- ligertoolbar 动态加载按钮_Axure利用动态面板实现环形加载进度条
- Linux下解决高并发socket最大连接数限制,tcp默认1024个连接
- HTML前端开发之路——Transition
- WSS(Windows Storage Server)2008R2使用指南(三)配置及使用篇
- Ubuntu下配置Window CIFS共享
- 第76节:Java中的基础知识
- python基础学习(八)元组
- vim简单操作---学习随笔
- 成都Uber优步司机奖励政策(3月23日)