gets()函数详解和缺陷
来源:互联网 发布:mac爱奇艺视频转换器 编辑:程序博客网 时间:2024/06/16 04:54
1.gets函数
1.1基本信息
原型:
char *gets( char *buffer);
功能:
gets函数从标准输入中读取一行文本,并存储于作为参数传递给它的数组中。一行文本由一串字符组成,以一个换行符('\n')结尾。在返回之前,gets函数丢弃换行符('\n'),取而代之的是以'\0'结尾。
返回值:
读取成功,函数返回与buffer相同的指针。读入过程中遇到EOF或发生错误,函数返回NULL指针。当返回值为NULL指针时可以用feof()和ferror()来判断函数是遇到EOF还是发生错误。
例如:
char str[10];if( gets(str)!= NULL )//Danger!{printf("str = %s\n",str);}
1.2 函数缺陷
gets函数没有限制它所读取长度,程序员应该保证buffer有足够的空间,否则buffer可能无法容纳gets所读取的内容,从而导致堆栈溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。
图1 溢出提示
为了安全起见,可以使用gets_s函数。
3 0
- gets()函数详解和缺陷
- 一种克服gets函数缺陷的方法
- gets() 和scanf()函数
- gets和fgets函数
- gets和puts函数
- 克服C语言gets函数缺陷的方法初探
- [转] 克服C语言gets函数缺陷的方法初探
- gets()函数和fgets()函数
- gets函数和fgets函数
- fgets函数和gets函数
- scanf()函数和gets()函数
- gets函数和fgets函数
- 关于gets和scanf函数
- linux中gets()函数和fgets()函数
- 详解gets和scanf的区别
- gets和scanf函数的区别
- 关于Scanf和gets函数的讨论
- fgets()和gets()函数的区别
- Intel 64和IA-32架构——操作模式
- Jquery和ajax开发案例之---动态股票信息
- 正在求知路上的毛毛虫希望能遇见智者帮忙化蝶奥
- 一款好用的PDF转换成Word转换器
- Android系统源码学习步骤
- gets()函数详解和缺陷
- 数据结构-----前序遍历二叉树非递归算法(利用堆栈实现)
- 苹果无敌风火轮如果不是那么酷的
- Java4Android (第28~29集) 接口
- 我的思想之旅
- 大数阶乘
- Android - monkey 参数说明
- 不能任意改变它的大小
- 2014-04-19编程之美初赛题目及答案解析