Причина в том, что строки C заканчиваются нулем.Это означает, что они рассматриваются как завершающиеся, когда встречается первое вхождение нулевого символа ('\ 0', значение 0).
Когда вы вводите трехсимвольную строку "abc" в строку str [0], это будет представлено в памяти как {'a', 'b', 'c', '\ 0'}.Четыре символа, последний из которых является нулевым терминатором.
Этот нулевой терминатор затем перезаписывается следующим вводом, поскольку str [0] является строкой из 3 символов, и, таким образом, нулевой терминатор будет записан в str [0] [3], что эквивалентно str [1] [0].