鱼C论坛

 找回密码
 立即注册
查看: 1543|回复: 3

[已解决]关于Linux上C编程中strlen()函数的诡异现象

[复制链接]
发表于 2018-8-26 11:38:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我不清楚是版本问题还是其他问题,我的环境是按照小甲鱼《带你学C带你飞》系列教程搭建的。

请各位大神看图, 一图 二图 为问题图, 可三图,四图却奇迹般的解决了。。。。。。

百思不得姐。
最佳答案
2018-8-26 11:47:51
1.因为没有字符串结束符'\0',访问到了其他的数据,其他的数据里面可能包含0这个数字,0在ascii码里面就是'\0'
2.因为可能i在栈中的储存正好在a后面,i的值0被当成了'\0'

一图

一图

二图

二图
捕获.PNG
捕获1.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-26 11:46:49 | 显示全部楼层
刚好而已吧,最后一个应该要 0,a[4] = 0;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-26 11:47:51 | 显示全部楼层    本楼为最佳答案   
1.因为没有字符串结束符'\0',访问到了其他的数据,其他的数据里面可能包含0这个数字,0在ascii码里面就是'\0'
2.因为可能i在栈中的储存正好在a后面,i的值0被当成了'\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-26 12:11:32 | 显示全部楼层
定义的i放在a前面,a要6个单位,a【4】这个位置了面本来存的是0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-30 07:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表