#include<stdio.h>
#include<string.h>
int main(){
char ch[2][4];
strcpy(ch[0],"you");
strcpy(ch[1],"me");
ch[0][3]='&';
printf("%s\n",ch[0]);
}
简单来说吧:
①你写ch[0],通过%s,就把第一行的内容全输出来了,此时为you&
②因为此时仍没遇到'\0',字符串并未终止输出,继续就把ch[1]也输出了。所以输出的就是you&me了。
希望对题主有所帮助,可以的话,帮忙点个采纳!
因为你用%s输出时输出字符串。原本数组第一行最后一个字符是字符串结束符'\0',但由于ch[0][3] = '&',把这个'\0'改成了'&',所以字符串会一直输出到整个二位数组内容
供参考:
#include<stdio.h>
#include<string.h>
int main(){
char ch[2][4];
strcpy(ch[0],"you");//ch[0][0]='y',ch[0][1]='o',ch[0][2]='u',ch[0][3]='\0'
strcpy(ch[1],"me"); //ch[1][0]='m',ch[1][1]='e',ch[1][2]='\0'
ch[0][3]='&'; //ch[0][3]='&';
printf("%s\n",ch[0]);//%s输出字符串,直到碰到 '\0' 结束符停止。you&me\0
}