为什么将下面的for(i=0,j=strlen(ch1)-1;i<j;i++,j--)改 for(i=0,j=2;i<j;i++,j--)才正确

2025-05-23 16:31:32
推荐回答(4个)
回答(1):

strlen()函数是当碰到第一个'\0'时返回字符串长度.因此,如果ch1最后没有'\0'将出现超过其定义长度3,这样会发生数组越界问题。
当你进行输入时候,录入3个字符,那么最后一个不是'\0',因此strlen()结果将是个不确定数。如果指定j=2,这样在ch1[0],ch1[1],ch1[2]进行交换将不会出现越界问题

回答(2):

因为 strlen(ch1) 为2,不是3 ,把-1去掉就行了。

回答(3):

你的数组长度有误,会出现越界问题

回答(4):

你的程序有问题,定义的变量t是用来作为转换字符的,因此应该定义为字符类型而不是整形