Что выведется на экран после выполнения этого фрагмента программы?
Выведутся три символа "сло", и, возможно, что-нибудь после них, что именно -- непредсказуемо.
Потому что strncpy копирует не более n (3) символов из исходной строки (s1) в конечную (s2), и если исходная строка длиннее 3 символов, strncpy не добавляет закрывающий символ с кодом 0. Поэтому в s2 попадёт "сло", а дальше останется мусор, который был в памяти, и puts выведет весь этот мусор до первого символа с кодом 0.
Выведутся три символа "сло", и, возможно, что-нибудь после них, что именно -- непредсказуемо.
Потому что strncpy копирует не более n (3) символов из исходной строки (s1) в конечную (s2), и если исходная строка длиннее 3 символов, strncpy не добавляет закрывающий символ с кодом 0. Поэтому в s2 попадёт "сло", а дальше останется мусор, который был в памяти, и puts выведет весь этот мусор до первого символа с кодом 0.