Стандарты C и C ++ указывают, что при открытии потока в текстовом режиме отправка ему \n
будет выполнять все необходимые действия в целевой системе для перемещения файла на следующую строку. В системе Unix это просто означает вывод \n
в файл. В некоторых основанных на записях системах это означает сброс текущей записи линейного вывода и переход к следующей. В MS-DOS и Windows это означает отправку \r
и \n
в поток.
Исторически, отправка \r
в телетайп приведет к сбросу каретки на левый край, и отправка \n
продвинет бумагу. Кто-то понял, что, хотя возможность сброса каретки без продвижения бумаги была полезной, \n
продвигать бумагу без сброса каретки было гораздо меньше, и поэтому некоторые устройства реагировали на \n
, продвигаясь к началу . следующей строки. MS-DOS, однако, предпочел хранить файлы таким образом, чтобы при выводе непосредственно на принтер, где \n
переместился бы в текущее местоположение на следующей строке, нужно было бы отправлять оба значения \r
. и \n
, если кто-то хочет go до начала следующей строки.