首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

gets( )用法?解决办法

2013-03-04 
gets( )用法?#include stdio.hint main() {char a[50]gets(a)puts(a)return 0 }z@z:~$ gcc a.c /tmp

gets( )用法?
#include <stdio.h>

int main()
 {
    char a[50];
    gets(a);
    puts(a);
    return 0;
 }



z@z:~$ gcc a.c 
/tmp/ccJlrK3u.o: In function `main':
a.c:(.text+0x1d): warning: the `gets' function is dangerous and should not be used.


为什么?

[解决办法]
我在gcc下编译通过,至于警告应该是说gets是不安全的,推荐用fgets等
[解决办法]
用fgets。

gets无法控制缓冲区大小,输入行过长就会内存溢出。
[解决办法]
程序没错,仅是警告,因为gets是不安全的。
用fgets 或者gets_s(如果你的编译器支持c11的话)。

fgets(a, sizeof(a), stdin)


gets_s(a, 50)

如果是最新版的gcc,加 -std=c11编译就行了。
[解决办法]
引用:
#include <stdio.h>

int main()
 {
    char a[50];
    gets(a);
    puts(a);
    return 0;
 }



z@z:~$ gcc a.c 
/tmp/ccJlrK3u.o: In function `main':
a.c:(.text+0x1d): warnin……
gets不对输入字符串大小进行检查,当输入字符串太长,程序崩溃

热点排行