'\x1A' 在 Windows 中有何特殊之处?
How is '\x1A' special in Windows?
阅读一些参考资料1, 2,我了解到fopen(3)
中第二个参数中的修饰符b
在[=中没有作用29=] 系统,同时它防止在 Windows 中对 \n
和 \x1A
进行特殊处理(见下文)。
我很清楚 \n
(LF) 在 Windows 中的特殊之处,因为文本文件使用 CRLF 换行(即 printf("\n")
实际上打印 \r\n
),但是\x1A
(SUB) 有什么特别之处?
fopen("D:\foo.txt", "rb");
^
\x1A
是 Ctrl+Z,它曾经在 MS-DOS 中用作文件结束标记(甚至可以追溯到 CP/M)。
Microsoft documentation没有提到"b"模式下的Ctrl+Z(只在"t"模式下),所以这可能是货物崇拜编程。我现在手边没有 Windows 盒子,所以我无法轻松查看。
阅读一些参考资料1, 2,我了解到fopen(3)
中第二个参数中的修饰符b
在[=中没有作用29=] 系统,同时它防止在 Windows 中对 \n
和 \x1A
进行特殊处理(见下文)。
我很清楚 \n
(LF) 在 Windows 中的特殊之处,因为文本文件使用 CRLF 换行(即 printf("\n")
实际上打印 \r\n
),但是\x1A
(SUB) 有什么特别之处?
fopen("D:\foo.txt", "rb");
^
\x1A
是 Ctrl+Z,它曾经在 MS-DOS 中用作文件结束标记(甚至可以追溯到 CP/M)。
Microsoft documentation没有提到"b"模式下的Ctrl+Z(只在"t"模式下),所以这可能是货物崇拜编程。我现在手边没有 Windows 盒子,所以我无法轻松查看。