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的关系?); 展开
 我来答
kaixingui2012
2015-11-17 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6488万
展开全部
char max[10]; 这个数组只能存储10个字符!
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个,就会越界啊!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式