我试图了解在 Windows(使用 MSVC)上以文本模式写入文件时换行符的行为。根据微软文档:
据说在文本模式下,
LF
(换行)字符在输出时会转换为CR LF
(回车+换行)组合。
那么,如果一个有思想的程序员尝试在 Windows 上以文本模式编写
CR LF
组合,例如 ,会发生什么?
fprintf(stream, "\r\n");
这是否会导致
CR CR LF
,由于翻译而使回车加倍,或者是否有不同的处理方式(保留为 CR LR
)?此行为是否有详细记录?
fopen()
的手册页:
在文本模式下,输入时回车换行 (CRLF) 组合将转换为单换行 (LF) 字符,输出时 LF 字符将转换为 CRLF 组合。
所以:
在文本模式下,输出
CR CR LF
。
在二进制模式下,输出,
CR LF
。