好像只是把一个换行符是不够好,但我知道它应该是回车+换行。如果你不把回车,只用换行做任何事情太可怕了发生?

这是在ANSI C和不会被重定向到一个文件或其他任何东西。只是一个正常的控制台应用程序。

有帮助吗?

解决方案

在Windows控制台遵循假定的文件,或与此有关的实际,物理终端在同一行结束约定。它需要看到两个CR和LF正确移动到下一行。

这就是说,有很多的ANSI C程序和控制台之间的软件基础设施。具体而言,任何标准C库I / O功能将试图做正确的事情,假设你允许它的机会。这就是为什么在fopen()参数tbmode改性剂被定义

使用t(默认为最流,并且尤其是用于stdinstdout)然后印刷任何\n转换为CRLF序列,而反向发生用于读出。要关闭问题,使用b改性剂。

顺便提及,端子传统上钩住* nix的盒包括的XTerm仿真也需要CR和LF的DEC VT100。然而,在* nix的世界,从一个换行符的CRLF序列的转换是在tty设备驱动程序处理所以大部分程序并不需要了解它,并且tb修饰都被忽略。在这些平台上,如果你需要在一个tty发送和接收字符没有这种修改,你需要仰视的stty(1)或系统调用它取决于。

如果您否则ANSI C程序避免C库I / O控制台(也许是因为你需要访问控制台的字符颜色等属性),你那么是否需要发送CR与否将取决于Win32 API调用您使用的发送的字符。

其他提示

如果您在* nix的环境\ n是(换行)可能是好的。如果你在Windows,而不是重定向(现在)换行也行,但如果有人在somepoint重定向: - (

如果你正在做的Windows,虽然,可能有问题,如果输出重定向到一个文本文件,然后另一个进程尝试消耗的数据。

在控制台知道要显示什么,但消费者可能高兴不起来......

如果您使用的是C#,您可以尝试Environment.NewLine “常量”。

http://msdn.microsoft.com/en -us /库/ system.environment.newline.aspx

如果您在香草ç真的,你坚持\ r \ n。 : - )

这取决于你使用他们的东西。某些程序无法显示正确换行,如果你不把两者\r\n

如果您尝试只写\n一些程序会消耗你的文本文件(或输出)可能会显示您的文本设置为单行而不是多行。

也有一些文件格式和协议,这将完全是无效的,而无需使用两个\r\n

我都没有这么长时间,我不知道我还记得发生了什么...但是没有一个单独的换行向下移动一行,而不返回到左边的列?

试了一下

根据你的编译器,标准输出信号就可以在文本模式下被写入之前打开,在这种情况下,单个换行将被转换为用\ r \ n

修改我只是试图快速测试,并且在XP不返回显示文件正常。我仍然不知道是否有编译器插入回报你。

在C,文件(被称为“流”)有两种形式 - 二进制或文本

这种区别的意义留执行/平台相关,但在Windows(与我见过共同实现)写入文本流“\ n”时,会自动转换为“\ r \ n”,而当从文本流为 “\ r \ n” 被自动转换为 '\ n'。

在“控制台”实际上是“标准输出”,这是默认打开作为文本流的流。因此,在Windows实践,撰写“!您好,世界\ n”应该是相当充分 - 和便携

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top