\ n和\ r之间的区别?

\n (换行符)和\r (回车)有什么区别?

特别是\n\r之间是否有实际区别? 有没有哪个地方可以用来代替另一个呢?

在ASCII代码方面,它是3 – 因为它们分别是10和13 ;-)。

但严重的还有很多:

  • 在Unix和所有类Unix系统中, \n是行尾的代码, \r意思是没有特别的
  • 因此,在C语言和大多数语言中(甚至远程地)复制它, \n是行结束的标准转义序列(根据需要翻译到特定于操作系统的序列)
  • 在旧的Mac系统(pre-OS X)中, \r代替行尾
  • 在Windows(以及许多旧的操作系统)中,行尾的代码是2个字符,按此顺序
  • 作为一个(令人惊讶的;-)结果(回溯到比Windows更早的操作系统), \r\n是Internet上文本格式的标准行终止
  • 对于机电传真types的“terminal”, \r命令滑架向左返回,直到它碰到最左边的停止点(一个缓慢的操作), \n命令滚筒向上滚动一行(更快的操作) – 这就是因为你总是 \n 之前\r ,所以当滑架仍然向左走时滚筒可以移动!
  • 对于字符模式的terminal(通常是模仿上面那些甚至更早的打印的),在原始模式下, \r\n作用类似(除了光标,因为没有托架或滚筒;-)

在实践中,在写入文本文件的现代语境中,你应该总是使用\n (如果你在一个奇怪的操作系统,例如Windows,底层的运行库将会翻译它;-)。 使用\r的唯一原因是,如果你正在写一个字符terminal(或者更可能是一个“控制台窗口”模拟它),并希望你写的下一行覆盖你刚写的最后一个(有时用于愚蠢的“ asciianimation“的效果,例如进度条),但是在GUI的世界里这已经变得相当陈旧了,但是;-)。

历史上用\n来移动滑架, \r用来将滑架移回到页面的左侧。

两个不同的字符。

\n在Unix文本文件中用作行结束符

\r在Mac文本文件中用作行结束符

\r\n (即两个)用于终止Windows和DOS文本文件中的行。

因为没有人特别提到它(他们是否太年轻,不知道/记得吗?) – 我怀疑使用打字机和类似设备。

如果您在使用支持多行打字机的时候需要一条新的生产线,则需要执行两项物理操作:将纸盒滑回到页面的开头(左侧,在美国),然后将纸张向上送一个槽口。

在行式打印机的日子里,唯一的做粗体文本的方法就是在没有换行符的情况下进行回车,并在旧的打印机上打印相同的字符,从而增加更多的墨水,从而使其看起来较暗(粗体) 。 当机械的“换行”function在打字机中失败时,这是令人讨厌的结果:如果您不注意,可以键入上一行文本。

两个不同的字符为不同的操作系统。 而且这在通过TCP/IP传输的数据中起作用,这需要使用\r\n

\n Unix

Mac电脑

\r\n Windows和DOS。

去完成,

在shell(bash)脚本中,可以使用\r发送光标,在前面放置,当然\n将光标放在新行上。

例如,尝试:

 echo -en "AA--AA" ; echo -en "BB" ; echo -en "\rBB" 
  • 第一个“回声”显示AA--AA
  • 第二个: AA--AABB
  • 最后一个: BB--AABB

但是不要忘记使用-en作为参数。

在窗口中,\ n移动到下一行的开头。 \ r移动到当前行的开头,而不移动到下一行。 我在我自己的控制台应用程序中使用了\ r,在这里我testing了一些代码,而且我不想看到文本滚动到我的屏幕上,所以在打印出一些文本之后,例如帧率( FPS),我会printf(“% – 10d \ r”,fps); 这将返回光标到行的开头,而不移动到下一行,并允许我在屏幕上有其他信息不会滚动,而帧速率不断更新在同一行(%-10使确定输出是至less10个字符,左alignment,所以它最终填充空格,覆盖该行的任何旧值)。 这样的东西非常方便,通常当我debugging东西输出到我的控制台屏幕。

有一点历史

/ r表示归功于打字机的“返回”或“回车”。 回车把你的马车一直移到右边,所以你在行的开头打字。

/ n代表“新行”,再次从打字机的日子开始,向下移动到新行。 这并不意味着它的开始,这就是为什么一些操作系统采用了a / r返回和/ n换行符的需要,因为这是打字机的命令。它还解释了旧的8位计算机从“回车”,这是熟悉的“返回”,而不是“回车”。

 #include <stdio.h> void main() { int countch=0; int countwd=1; printf("Enter your sentence in lowercase: "); char ch='a'; while(ch!='\r') { ch=getche(); if(ch==' ') countwd++; else countch++; } printf("\n Words = ",countwd); printf("Characters = ",countch-1); getch(); } 

让这个例子试着把\ n代替\ r它不会工作,并试图猜测为什么?