Обработка терминального ввода-вывода занимает около 40 страниц во втором издании «Расширенное программирование в среде UNIX» ... Быстро, вы можете установить eol и eol2 (termios.c_cc [EOL] и termios.c_cc [EOL2] ) символов, чтобы иметь дополнительные символы, ведущие себя как \ n.
Вы даже можете попробовать это с stty
$ cat -
abc\tdef
abc\tdef
^d
$stty eol ^i
abc\tabc\tdef
def
^d
Пример того, как сделать это в программе (на практике не забывайте обрабатывать ошибки и восстанавливать исходное состояние в конце, при приостановке, при сигнале и т. Д., Поэтому для этого используется упакованная библиотека это лучше, есть много деталей, чтобы получить право на надежное приложение).
struct termios term;
tcgetattr(STDIN_FILENO, &term);
term.c_cc[EOL] = '\t';
tcsetattr(STDION_FILENO, TCSAFLUSH, &term);