char st[15];scanf("%s",st); printf("%s%s",st,st)

如果输入的是programmingprogramming为什么结果是programming呢?... 如果输入的是programmingprogramming
为什么结果是programming呢?
展开
 我来答
帐号已注销
2019-12-09 · TA获得超过317个赞
知道小有建树答主
回答量:345
采纳率:90%
帮助的人:86.8万
展开全部

字符数组st长度为15个字节,只能存放具有14个有效字符的字符串,所以输入“programmingprogramming”,执行scanf("%s",st);后,st溢出了。

内存溢出会覆盖后续内存,至于会出现什么情况,不可预料。

我实际执行了上述代码,结果不是programming,而是programmingprogramming。

这不是说内存溢出没有问题,而是st数组存放位置后没有其它关键性东西,毕竟代码短。

greatReanswer
高粉答主

2019-12-08 · 醉心答题,欢迎关注
知道大有可为答主
回答量:1.9万
采纳率:89%
帮助的人:684万
展开全部

可能是程序解决的错误的原因。

  • 你字符数组只有15个,应该只能存储14个,有一个空字符,而你现在有很多个,他存不下,也只能存储一部分,你可以尝试只输入14个字符以下。
  • 还有你后面用输出函数输出两回,所以顺序是不是被弄颠倒啦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2019-12-08 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6497万
展开全部
这题,当输入为programmingprogramming时,输出一个programmingpro是没有问题的,后面跟着什么就难说了,不同机器不同时间都有可能有不同结果。你得到的结果是特例,没有普遍性,也许其他人能得到完整的programmingprogramming,这就看运气了。因为在programmingpro之后的内存空间就不受这个代码控制了,情况不可预见。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杞高昂Fs
2019-12-08
知道答主
回答量:4
采纳率:0%
帮助的人:2309
展开全部
什么意思????????????????????
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友782081c

2019-12-08 · TA获得超过4548个赞
知道大有可为答主
回答量:2.2万
采纳率:87%
帮助的人:1032万
展开全部
这一排英文缩写的字母就是变成和怎么第三季的知识?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式