C 语言中关于gets函数的输入问题

如下图,为什么gets在获取第二个字符串的时候就卡掉了?

char *p[5]; //这是定义一个数组p, 其元素为char* 指针
for()循环中你没有分配空间就使用,所以,程序会出现异常!
修改如下:
for( i=0;i<N;i++ )
{
p[i]=malloc(1000); //分配1000个字节空间
gets(p[i] );
}追问

这个里面我没有分配空间,为什么就可以读入字符串呢?两者有什么区别啊?

追答

这个是你运气好!
记住:指针变量,一定要有空间分配(动态或静态)才可以使用!

追问

运气好,😓
问题是,实现我并不知道输入的字符串的长度,越界了怎么办?

追答

那你在编程之前需要进行需求分析,确定字符串的最大长度,同时,采用安全代码开发以保证输入数据不越界!
char str[100]={0};
fgets( str, 99, stdin ) ;
if ( str[strlen(str)-1]=='\n' )
str[strlen(str)-1]='\0' ;

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网