no перевод в компиляторе С. Строка [и они эквивалентны]:
// (1) these are all equivalent to a string of newline of length 1:
"\n"
"\x0a"
"\012"
// (2) these are all equivalent to a string of carriage return of length 1:
"\r"
"\x0d"
"\015"
// (3) these are all equivalent to a string of CRLF of length 2:
"\r\n"
"\x0d\0x0a"
"\015\012"
При выводе на терминал по системе POSIX, драйвер телетайпа будет преобразовывать случай (1) в CRLF в приготовленном режиме. Это можно изменить с помощью некоторых вызовов TTY ioctl
. IIRC, аналогичный для окон (?). Но, [снова] IIRC, в окнах есть специальный вызов для Windows, который должен быть выполнен, потому что перевод выполняется на очень низком уровне.
При записи в файл в системе POSIX перевод не выполняется.
Однако при записи в файл под Windows, случай (1) переводится в ОС CRLF для нормальной открывается [потому что по умолчанию режим «текст»]:
open(file,O_WRONLY);
fopen(file,"w");
Чтобы подавить перевод под окнами для случая (1), откройте файл в режиме «бинарного»:
open(file,O_WRONLY | O_BINARY);
fopen(file,"wb");
двоичный режим также применяется для открытия в режиме чтения. И для POSIX это [эффективно] нет-op и игнорируется. С/без двоичной опции под POSIX открывается в двоичном режиме, потому что POSIX имеет no «текстовый режим» для файлов.
Таким образом, для переносимости между POSIX/окнами это режим, используемый для подавления перевода.
Ты мужчина после моего собственного сердца. И, я готов поспорить, вы описываете IBM/370 (эру) вместе с терминалом 2741 [по существу, выборкой IBM со скользящей бумагой для подачи звездочек]. Кроме того, для TTY-типа с телексным типом (например, ASR-33) они были ориентированы на характер, но просто слепя следовали за CR или LF. Печать с помощью только CR несколько раз (с разным blah) сделала overstrike и использовалась, чтобы заслонять пароль, который будет введен для входа в систему, поскольку не было подавления эха введенного текста –