char str2[4]和char str4[4]这两个数组只有4个元素,但是你在赋值的时候,把这4个元素都给占满了,没有给\0留位置。而strcmp在比较字符的时候,是根据\0来判断字符是否结束的。因为str2和str4没有给\0留位置,所以str2和str4在什么地方遇见\0就不得而知了,编译器会一直读取str2和str4之后的内存,直到遇到\0为止,所以虽然前4个字符一致,但是后面的字符是未知的,所以就不一定相等。
如果要让str2和str4相等,就把char str2[4]和char str4[4]的大小调大一些,比4大就可以,比如char str2[5]和char str4[5]
可以把方法截一下吗?
数组定义太小了,后边放不下‘\0’了,char str2[5],或者char str2[]都行
strcmp:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止