字符数组的输入输出问题

char str1[5],str2[5],str3[5];
scanf("%s%s%s",str1,str2,str3);
输入数据:How are you?
数组在内存中的存储为什么如下图:
空格为什么以\0存储

img

并不是空格为\0,scanf()以输入空格为结束的标志且不会计入输入,因为你str1设成的是[5],所以剩下两格没有被赋值默认为\0(表示结束)