我第一个把字符串复制到另外一个字符数组中吧'\0'放在循环中是错的,答案显示不出来,但放在循环外可以,第二个代码放在循环中可以,但放在循环外不行,这是为什么?
第一个代码:你放在循环里,那么每次执行该循环,数组b的元素都被赋给了‘\0’。所以在输出时,不满足b[i]!=0,所以不会输出。
第二个代码,在循环中赋值时,是这样的:
j[0]=i[0],j[1]='\0';
j[1]=i[0],j[2]='\0';
...
因为你先进行n++,所以讲j[n]放在里面是没问题的,而在代码一中,是先令数组=‘\0’,再i++。
'\0'是字符串结束符。
第二图,循环中第二句覆盖了前一句的复制,导致b都为'\0'
第三图,循环中给j[n]赋值后,等n++了再给j[n]赋值'\0',接着进入下次循环中,此时j[n]的n还是上次循环结束时的值。执行j[n]=i[n],则用i[n]覆盖了'\0'
一看就是你想用while模拟for循环,但忽略了n++该在最后执行