Как массивы символов должны использоваться в качестве строк?

Я понимаю, что строки в C - это просто символьные массивы. Поэтому я попробовал следующий код, но он дает странные результаты, такие как вывод мусора или сбой программы: #include <stdio.h> int main (void) { char str [5] = "hello"; puts(str); } Почему это не работает? Он компилируется чисто с...