MSVC文本模式下写入CR LF的换行转换行为探究
Windows MSVC文本模式下换行符写入行为解析
在MSVC的C运行时库中,文本模式的换行符转换规则是仅对单独的LF(\n)进行替换:输出时,每一个独立的\n会被自动替换为CR LF(\r\n)组合;而CR(\r)字符本身不会被修改,会原样写入文件。
当你执行fprintf(stream, "\r\n");时,实际的写入过程是:
- 先写入
\r(回车符),这个字符不会触发任何转换; - 接着写入
\n(换行符),此时文本模式的转换规则生效,\n被替换为\r\n; - 最终文件中会得到的字节序列是
\r+\r\n,也就是CR CR LF。
关于这个行为的详细说明,MSVC的C运行时库文档明确指出:文本模式下的输出转换仅针对LF字符,CR字符不会被转换或修改,会直接保留在输出流中。
内容的提问来源于stack exchange,提问作者tueda
相关产品推荐
相关产品推荐

