gcc使用gets和puts报错
来源:互联网 发布:3人动作数据 编辑:程序博客网 时间:2024/05/21 01:52
该提示说明linux下gcc不支标准c的gets,puts函数,可以用gcc fgets,fputs分别代替gets,puts,其格式及
更改如下:
#include "stdio.h"
main()
{
char st[15];
printf("input string:\n");
fgets(st,15,stdin); /*stdin 意思是键盘输入*/
fputs(st,stdout); /*stdout标准输出*/
}
main()
{
char st[15];
printf("input string:\n");
fgets(st,15,stdin); /*stdin 意思是键盘输入*/
fputs(st,stdout); /*stdout标准输出*/
}
之所以gcc不推荐使用gets和puts函数,原因在expert c programming上写的很清楚:
gets函数并不检查缓冲区的空间,事实上他也无法检查缓冲区的空间,如果函数的调用者提供了一个指向堆栈的指针,并且gets函数读入的字符数量超过了缓冲区的空间,gets函数将会愉快的将多出来的字符继续写入到堆栈中,这样就覆盖了堆栈原来的内容
早起的internet蠕虫病毒就利用了这样一个bug
c语言官方手册强烈建议用fgets()函数彻底取代gets函数
gets(line);
替换成:
if(fgets(line,sizeof(line),stdin)==NULL)
exit(1);
这样就不会因为其他人运行程序而覆盖掉堆栈中的重要区域
但是ANSIC并没有将gets从标准中取消掉! 0 0
- gcc使用gets和puts报错
- gcc 里不能使用gets() 和 puts() 函数的解决办法
- gets()和puts()
- gets和puts函数
- gets和puts
- scanf()和gets()及printf()和puts()
- gets()gets_s()puts()函数的使用
- scanf(),printf()和gets(),puts()的区别
- gets()、puts()和fgets()、fputs() 的区别。
- 字符串处理函数puts()和gets()
- gets()和puts()函数分析
- gets()和puts()函数
- gcc不支持标准c的gets与puts函数
- gcc不支持标准c的gets puts函数
- 输入和获取字符的使用(putchar,getchar,puts,gets,fputc,fgetc,fscanf,fprintf)
- fgets fputs 的结合使用 ;gets puts的结合使用
- puts 和 printf %s【gets 和 %s姐妹篇】
- 关于gets()/puts() 和getchar()/putschar() 和getline()
- 第9周项目3(2)-星号图
- 定义了一个数组 int CC [] ={1,2,3}; Array constants can only be used in initializers.
- 使用meta标签指定双核浏览器以IE浏览器内核渲染网页
- MySQL数据库新建用户报错
- linux命令图解
- gcc使用gets和puts报错
- Android 之 ServiceManager与服务管理
- 得到两个list中相同的部分。
- C++库资源
- UVA - 437 The Tower of Babylon
- docker:搭建lamp应用
- HDU 3001 Travelling(DP状态压缩)
- JAVA环境配置全解
- java基础知识点