字符串大小写转换,数组名做参数

在软件上运行可以成功,但是提交到网站的编译器会显示无效内存引用,看了很多次也没有发现问题,请帮忙指出错误并修改,谢谢!

img

img

img


改四个地方应该就行了,char改为void,ch[100]改为ch[],退出循环条件改为ch[i]!='\0',最后return语句删了,如果字符刚好输了100个的话,建议把数组的大小改成101,给'\0'留个空间

改成指针试试

问题原因在于调用printf打印ch产生了地址越界,printf打印字符串的时候字符串必须以'\0'结尾,否则printf会一直往后面找'\0'导致异常。修改方法如下:

//显式初始化ch数组
char ch[100] = {'\0'};

你可以将实参改为指针操作,也可以将数组初始化,{'\0'}