C语言 多个字符数组一起输入为什么可以越界?

char str1[5] ;
scanf("%s",str1 );
printf("%s",str1 );
定义了str1【5】,那么最多不能输入超过4个,否则会报错,这个可以理解;

但是
char str1[5] ,str2[5],str3[5];
scanf("%s%s%s",str1,str2,str3 );
printf("%s%s%s",str1 ,str2,str3);
这样定义居然可以输入123456,123456,123456,,都可以成功输出,这是为什么?这难道不算越界了吗?求解答!!!!

能成功输出不代表你没越界 scanf的时候给你加/0了 所以你能成功输出但是已经越界 你可以自己调试的时候把str1【5】和str1【6】打出来看看就知道了
温馨提示:答案为网友推荐,仅供参考
相似回答