关于C语言字符数组的输出问题

int main(){
    char a[7] = "abcdef";
    char b[4] = "ABC";
    strcpy(a, b);
    printf("%c\n", a[5]); //f
    printf("%s\n", a);    //ABC
    return 0;
}

这里我不理解,进行strcpy,为什么我的a[5]会输出f,但是我的整个字符数粗a
输出ABC,求指导。

char a[7] = "abcdef";
char b[4] = "ABC";
strcpy(a, b);
之后a的内容为"ABC\0ef\0";

试试下面的语句
printf("%s\n", a+4);