char数组输出乱码C语言

img

c语言,凯撒密码 用数组为什么最后会输出乱码
希望有详细原因,能否顺便看一下代码能不能简化

最根本问题是b字符串没有结束符0。你用%s输出,会一直找到第一个0为止。所以会有乱码
修改很简单:b[100] = {0};
另外,第20行循环结束条件应该写成a[i] != 0

img


这里且写成或了