关于c语言问题

如图代码定义字符数组ch,只输入一个字符s经过for循环计算,按理说数组ch的值是不变的,但是经过for循环后在数组72位上会赋值上字符b,排除后发现是count[ch[... 如图代码定义字符数组ch,只输入一个字符s经过for循环计算,按理说数组ch的值是不变的,但是经过for循环后在数组72位上会赋值上字符b,排除后发现是 count[ch[j]-' ']++; 这行的问题,但是不清楚这行是如何改变ch的值的,而且只有当char ch[100]={0};初始化时赋值为\0才会出现这种情况,这样char ch[100];不初始化不会出现上面的问题;希望有人能够帮我解决问题。 展开
 我来答
百度网友9b474de
2018-10-31 · TA获得超过328个赞
知道小有建树答主
回答量:270
采纳率:90%
帮助的人:87万
展开全部
是数组越界了。
空格字符' '的数值是32,当你把ch初始化为0,然后又读取了一串字符,然后 j 循环超过字符串长度后,所有ch[j]都是0,用0减32当数组下标,嘿嘿。。。
不知道你ch[j]-' ' 这是干什么?是要小写字母转大写?为什么坐标位置用它来定而不是直接用j?
估计一定要改的是循环中的j<100,改成j<strlen(ch)
更多追问追答
追问
{0}是空字符的意思 ,我数组长度就是100
追答
? 我说的话没看懂?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式