LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1525|回复: 10

gcc中无法使用gets().

[复制链接]
发表于 2004-11-5 15:54:50 | 显示全部楼层 |阅读模式
gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --host=i386-redhat-linux
Thread model: posix
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)

/tmp/cccA9U6s.o(.text+0x40): In function `main':
: the `gets' function is dangerous and should not be used.
发表于 2004-11-5 16:14:07 | 显示全部楼层
使用fgets
 楼主| 发表于 2004-11-5 16:28:16 | 显示全部楼层
从终端能不能输入带空格的字符串,scanf()好象不行。
发表于 2004-11-6 08:00:26 | 显示全部楼层
实在懒的看文档,自己做个就可以了啊
每次读一个字符,到了规定的字符串分隔符就存下来继续读下一个字符串不就可以了
 楼主| 发表于 2004-11-8 10:06:34 | 显示全部楼层
谢谢.
我最近在学c,只是想弄明白c提不提供这个功能函数.
发表于 2004-11-8 10:50:00 | 显示全部楼层
你上面的哪个提示不是说gcc不支持,而是因为这个函数容易造成溢出,gcc会提示你危险,不要使用这个函数。
gets fgets都是支持输入空格的,
 楼主| 发表于 2004-11-8 13:03:35 | 显示全部楼层
谢谢楼上的.
在问一个问题.
main()
{
float a,b;
int c;
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("Max is %d\n",c);
}
int max(float a,float b)/*用float会警告,用double或int都不会,为什么????*/
{
int t;
t=(int)(a>b?a:b);
return (t);
发表于 2004-11-8 13:40:52 | 显示全部楼层
具体原因不清楚,但你只要在前面加一个函数原型声明就可以了。先声明原型,这也是规范的做法
发表于 2004-11-9 11:39:17 | 显示全部楼层
一般是把函数的定义放在前面,如果放在后面,可以先在前面声明一个原型。
发表于 2004-11-9 23:22:52 | 显示全部楼层
其实是是这样的。
你一开时不申明的时候参数是int
int->float的转化 是这样会有误差的。如整数12345678 而 float 就是1.234567 x 10exp7 出现误差
而int->double不存在这样的问题。这样编译器就会警告


这主要和float的精度有关
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表