我编写的数组只有3个元素,为什么运行后会出现四个,前面三个是数组内容,最后一个是问号或者其他字符,这是为什么呢?
C 语言的字符串,最后一个元素必须要放 0.
请搜索 “C 语言字符串结束” , 有很多博文解释。
因为你这只是个字符数组,不是字符串。用%s输出时,要求变量是字符串才对。
字符串是字符数组的有效字符后面有字符串结束符'\0'才行。你这没有,所以输出时会一直在后续内存中找到第一个'\0'为止。你这后面的乱码就是在数组后面,'\0'之前的内存数据,由于不是可见字符,所以是乱码。
修改为char a[4] = {'a','c','d','\0'};就只会输出acd了
因为%s是读取到'\0''位置结束,你试试把最后一个字符换成'\0'就不会出现这种问题了