黑马程序员技术交流社区

标题: 基础测试题遇到的gets问题。 [打印本页]

作者: holfioo    时间: 2015-5-9 22:05
标题: 基础测试题遇到的gets问题。
本帖最后由 holfioo 于 2015-5-12 22:32 编辑

基础测试,遇到用了get问题。。
#include <stdio.h>
#define M 9999
int main()
{
    char c[M];
    gets(c);  
    return 0;
}

各种提示unsafe,确实会造成隐患。。有什么用法来代替字符串的录入?

PS:就是查找字符串中最长字符的题。。
作者: wangzhewjl    时间: 2015-5-10 09:40
用scanf呢?
作者: Rdxer    时间: 2015-5-10 10:06
字符串中最长字符????
作者: 飞翔的猪    时间: 2015-5-10 21:33
gets的长度可以无限输入,所以就是安全隐患,还有个函数叫做fgets 是gets的安全版 你可以查一下用法,在字符串输入时候比scanf好用
作者: wanjiadenghuo    时间: 2015-5-10 22:18
用Scanf函数来代替
作者: 大可乐    时间: 2015-5-11 00:12
看不懂、、、、、、、、
作者: xiaofei93    时间: 2015-5-11 08:26
把get(c);换成scanf("%s", c);
作者: roblonely    时间: 2015-5-11 10:10
xiaofei93 发表于 2015-5-11 08:26
把get(c);换成scanf("%s", c);

但是这样会使丢失空格后面的内容
作者: xiaofei93    时间: 2015-5-11 10:28
roblonely 发表于 2015-5-11 10:10
但是这样会使丢失空格后面的内容

恩恩是的,你试试这种可以吧:弄一个while循环,只要不遇到回车就循环。   while((c=getchar())!='\n'){    }
作者: 彭越    时间: 2015-5-11 10:35
gets的长度可以无限输入,所以就是安全隐患,fgets函数 是gets的安全版 ,在字符串输入时候比scanf好用
作者: wang415265521    时间: 2015-5-14 15:08
楼上都很厉害,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2