Спецификация языка C гласит, что последняя строка вывода в текстовом потоке может потребовать \n
в конце.В языке говорится, что это требование определяется реализацией .Это сразу означает, что в общем случае поведение программы не определено, если строка ее вывода в текстовый поток не имеет \n
в конце.
Поведение становится определенным, только когда вы говорите о какой-то конкретной реализации.Некоторая реализация может произвести вывод.Другая реализация может ничего не производить.И еще одна реализация может вести себя по-другому.
Для вашей конкретной реализации (GCC в Linux) я бы ожидал увидеть вывод даже без завершающего \n
.Может быть, в настройке вашей оболочки / терминала есть что-то, что делает его невидимым.