C语言 gets()输入问题!
{inti=0;charmax[10];char*p=max;puts("Pleaseenter10strings");while(i<10){printf("max[%...
{int i = 0;char max[10];char *p = max;puts("Please enter 10 strings");while (i< 10){printf("max [%d] = Continue input: ",i);gets(p+i++);}return 0;}为什么输入 最后的时候(max[9]的时候 回车 VS报错.表示不理解,求高手指点下!谢谢!在qt下运行 没报错,这是IDE的关系?);
展开
1个回答
展开全部
char max[10]; 这个数组只能存储10个字符!
gets(p+i++); 这里,一直在这一个数组中,循环输入多个字符(字符串),超出max[9]的位置就越界了,当然就报错了。
qt上不报错,只能是你的环境运气好,越界的位置并没有其它程序使用,所以没有出错。
gets(p+i++); 这里,一直在这一个数组中,循环输入多个字符(字符串),超出max[9]的位置就越界了,当然就报错了。
qt上不报错,只能是你的环境运气好,越界的位置并没有其它程序使用,所以没有出错。
追问
但是 我这不是有条while (i< 10)来判断是否越界了吗?max[9]输完回车之后 在上来判断while (i< 10) 条件不就为假了吗!下面也不可能在做到了啊? 如果说是i++的关系max[9]输入完毕 i++了 到10了 程序也不会再检查while (i< 10)为假了,里面的代码不就不执行了啊?为什么还会越界?
追答
char max[10]; 这个数组只能存储10个字符!
gets(p+i++); 你这里输入的字符,只要从i位置算起,超过9个,就会越界啊!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询