看起来只放一个换行就足够了,但我知道它应该是回车+换行。如果不输入回车符而只使用换行符,会发生什么可怕的事情吗?
这是 ANSI C 格式的,不会重定向到文件或其他任何内容。只是一个普通的控制台应用程序。
Windows 控制台遵循与文件或实际物理终端相同的行结束约定。它需要同时看到 CR 和 LF 才能正确移动到下一行。
也就是说,ANSI C 程序和控制台之间有很多软件基础设施。特别是,任何标准 C 库 I/O 函数都会尝试做正确的事情,假设您已经允许它这样做。这就是为什么fopen()
's t
and b
修饰符为mode
参数被定义。
With t
(大多数流的默认设置,特别是stdin
and stdout
)然后任意\n
print 被转换为 CRLF 序列,读取时则相反。要关闭该行为,请使用b
修饰符。
顺便说一句,传统上连接到 *nix 盒子的终端(包括 XTerm 模拟的 DEC VT100)也需要 CR 和 LF。然而,在 *nix 世界中,从换行符到 CRLF 序列的转换是在 tty 设备驱动程序中处理的,因此大多数程序不需要了解它,并且t
and b
修饰符都被忽略。在这些平台上,如果您需要在 tty 上发送和接收字符而不进行修改,则需要查找 stty(1) 或它所依赖的系统调用。
如果您的其他 ANSI C 程序避免对控制台进行 C 库 I/O(可能是因为您需要访问控制台的字符颜色和其他属性),那么您是否需要发送 CR 将取决于您正在使用哪个 Win32 API 调用发送字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)