C语言 请教一个字符串小问题

为什么数组只能有两个元素,输入多与2个,但是还是会输出完整内容呢?不会溢出吗?


#include
main()
{
    
    char a[2];
    scanf("%s",a);
    printf("%s",a);
}

img

你这个a数组只能存放一个有效字符啊
作为字符串来说,字符数组必须保留一位存储字符串结束符。所以a[2]实际只能存储一个有效字符。你输入hello,它会写从a数组起始地址往后写,导致越界输入。程序可能会崩溃
能完整输出说明你运气好,a数组后面的内存空间正好是空闲的,没有被其它程序占用。