c语言 gets()会不会把原数组的值全部覆盖掉?比如原数组中有1234四个字符,通过gets输入abc,最终

为什么存储的是abc而不是abc4... 为什么存储的是abc而不是abc4 展开
 我来答
百度网友b0bba24
推荐于2017-12-16 · TA获得超过887个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:465万
展开全部
gets得到的是字符串,而字符串是以'\0'结尾的啦。
如:
char a[10];
gets(a);//你输入1234,则a里存储的内容是"1234\0",一共占了5个位置,不要忘了'\0'
gets(a);//这里你输入abc,则a存储的内容是"abc\0\0",看到没有两个\0了,而输出字符串,是遇到\0
//就结束的啦。如果你输入ab,则a存储的内容是"ab\04\0",你可以试着输出a[3],那么它会输出4,
//不信?你可以试一试啦
德克and德华

2013-03-21 · TA获得超过2650个赞
知道小有建树答主
回答量:1207
采纳率:100%
帮助的人:625万
展开全部
你的原数组是这样的{'1', '2', '3', '4', '\0'}
gets输入abc后是这样的{'a', 'b', 'c', '\0', '\0'}
gets函数会自动在读取的字符串后加一个空字符。所以‘4’被这个空字符覆盖了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ooootherz
2013-03-22 · TA获得超过165个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:78.5万
展开全部
gets()函数是输入一个字符串。而字符串默认是以'\0'结尾。当你gets输入为abc的时候,存入数组的内容应该是abc'\0' 共4个字符,覆盖了原来的4个数字。
如果你输入的事ab 则存在原数组的内容则是ab_4
楼主求采纳呦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式