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

特别是\\n\\r之间是否有实际区别? 在某些地方应该使用一个而不是另一个?


#1楼

两个不同的字符。

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

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

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


#2楼

从历史上看, \\n用于将笔架向下移动,而\\r用于将笔架移回到页面的左侧。


#3楼

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

\\n Unix

\\r Mac

\\r\\n Windows和DOS。


#4楼

就ASCII码而言,它是3-因为它们分别是10和13 ;-)。

但认真的说,有很多:

  • 在Unix和所有类似Unix的系统中, \\n是行尾代码, \\r表示没什么特别的
  • 因此,在C语言和大多数以某种方式(甚至是远程)复制它的语言中, \\n是行尾的标准转义序列(根据需要转换为OS特定的序列/从OS特定的序列转换为该序列)
  • 在旧的Mac系统(OS X之前的版本)中, \\r代替了行尾代码
  • 在Windows(和许多旧的操作系统)中,行尾代码按顺序是2个字符\\r\\n
  • (令人惊讶;-)的后果(回到比Windows更早的操作系统), \\r\\n是Internet上文本格式的标准行终止符
  • 对于类似机电电传打字机的“终端”, \\r命令滑架向左返回,直到碰到最左边的挡块(缓慢的操作), \\n命令滚轮向上滚动一行(操作快得多),这就是原因你总是有\\r 之前 \\n ,所以,虽然车还在继续向左辊可以移动- !),维基百科有一个更详细的解释 。
  • 为字符模式端子(典型的模拟偶数旧的印刷那些如上述),在原始模式下, \\r\\n在光标方面类似(动作除了两者,因为没有托架或滚柱;-)

实际上,在现代的写入文本文件的上下文中,应始终使用\\n (如果您使用的是奇怪的操作系统(例如Windows;-,则底层的运行时将翻译该内容)。 使用\\r的唯一原因是,如果您正在写一个字符终端(或者更可能是一个模拟它的“控制台窗口”),并且希望您写的下一行覆盖您刚写的最后一行(有时用于愚蠢的“ ascii动画”(例如进度条)的效果)–不过,在GUI的世界中这已经变得过时了;-)。


#5楼

去完成,

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

例如,尝试:

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

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


#6楼

在Windows中,\\ n移至下一行的开头。 \\ r移至当前行的开头,而不移至下一行。 我已经在自己的控制台应用程序中使用了\\ r,在其中我正在测试一些代码,并且我不想看到文本在屏幕上滚动,因此在打印出一些文本(例如帧频后, FPS),我将打印f(“%-10d \\ r”,fps); 这会将光标返回到该行的开头,而不会向下移动到下一行,并允许我在屏幕上显示其他信息,而当帧率在同一行上不断更新时,该信息不会滚动(%-10表示确定输出至少为10个字符,请左对齐,以便最后用空格填充,并覆盖该行的所有旧值)。 通常,当我将调试的东西输出到控制台屏幕时,使用此类东西非常方便。

一点历史

/ r代表“归还”或“回车”,这归功于打字机的历史。 回车将您的车一直向右移动,因此您在行首输入。

/ n代表“换行”,从打字机时代开始,您一直移到新行。 不过,这并不是很重要,这就是为什么某些操作系统同时要求同时返回/ r和/ n换行符的原因,因为这是打字机执行输入命令的顺序。这也解释了使用8位旧计算机的原因。从熟悉的“回车”中选择“返回”而不是“输入”。


#7楼

由于没有人特别提到它(他们还太年轻,不知道/不记得吗?)-我怀疑\\r\\n起源是打字机和类似设备。

当您在使用具有多行功能的打字机时想要换行时,它必须执行两个物理操作:将笔架滑回到页面的开头(在美国,左侧),并将纸张送入一个缺口。

回到行式打印机时代,例如,执行粗体文本的唯一方法是在不换行的情况下返回回车,并在旧字符上打印相同的字符,从而增加墨水量,从而使其看起来更暗(合并) 。 当机械的“换行”功能在打字机中失败时,这就是令人讨厌的结果:如果您不注意,则可以在前一行文本上键入内容。


#8楼

只是增加了混乱,我一直在使用浏览器的HTML页面中的TextArea元素来开发一个简单的文本编辑器。 考虑到CR / LF的兼容性问题,我编写了代码来检查平台,并使用适用于该平台的换行符。

但是,当我通过一个小的JavaScript函数检查TextArea中包含的实际字符时发现了一些有趣的东西,该函数生成了与字符相对应的十六进制数据。

为了进行测试,我输入了以下文本:

您好,世界[输入]

再见,残酷的世界[输入]

当我检查文本数据时,获得的字节序列是这样的:

48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 0a 47 6f 6f 64 62 79 65 2c 20 43 72 75 65 6c 20 57 6f 72 6c 64 0a

现在,大多数查看此内容并看到0a但没有0d字节的人会认为,此输出是在Unix / Linux平台上获得的。 但是,问题出在这里:我在Windows 7 64位版的Google Chrome中获得了此序列。

因此,如果您正在使用TextArea元素并检查文本,请按照上面的操作检查输出,以确保从TextArea返回了哪些实际字符字节。 我尚未看到这在其他平台或其他浏览器上是否有所不同,但是如果您要通过JavaScript执行文本处理,并且需要使该文本处理平台独立,则需要牢记这一点。

以上文章中涵盖的约定适用于控制台输出,但看起来HTML元素遵循UNIX / Linux约定。 除非有人在其他平台/浏览器上发现其他问题。


#9楼

#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++;elsecountch++;}printf("\n Words = ",countwd);printf("Characters = ",countch-1);getch();}

让我们以这个示例为例,尝试将\\ n替换为\\ r它将不起作用,并尝试猜测原因?

\\ n和\\ r之间的区别?相关推荐

  1. r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别

    r中rep 在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repositor ...

  2. 了解品牌名称 TM (™) 和 R(®) 符号之间的区别至关重要

    了解品牌名称 TM (™) 和 R(®) 符号之间的区别至关重要,因为它可以帮助选择正确的符号来推销您的品牌标识.TM (™) 标志表示未注册的商标:产品上的 R (®) 符号表示它是注册商标:™ 商 ...

  3. 机器学习、数据科学、人工智能、深度学习和统计学之间的区别!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Vincent Granville,来源:机器之心 在这篇文章中, ...

  4. oracle类型sql转为mysql_Oracle和MySql之间SQL区别(等效转换以及需要注意的问题)...

    >本篇博文是Oracle和MySQL之间的等效SQL转换和不同,目前市面上没有转换两种SQL的工具,小编觉得以后也不一定会有,于是在业余时间整理了一下,如果有什么错误之处请留言告知,小编也是刚 ...

  5. 一文读懂机器学习、数据科学、人工智能、深度学习和统计学之间的区别!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 作者:Vincent Granville 来源:机器之心公众号 链接:http://www.d ...

  6. [转]ExtJs基础--Html DOM、Ext Element及Component三者之间的区别

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  7. linux下常用的关机命令有:shutdown、halt、poweroff、init;重启命令有:reboot。下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法。

    linux下常用的关机命令有:shutdown.halt.poweroff.init:重启命令有:reboot.下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法. 原创未通过审 ...

  8. Spring中@ Component,@ Service,@ Controller和@Repository之间的区别

    在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注之间的 ...

  9. Linux_linux常用工具---闲杂篇(除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.)

    vim自行查找资料, 自行配置插件. 借鉴别人的 " 显示相关 """"""""""&qu ...

最新文章

  1. 【分享】bootstrap学习笔记
  2. 话AI、学实践、探未来,亚马逊云科技AI在线大会报名开启!
  3. ajax回调函数ifelse,实现AJAX及用Promise解决回调函数命名问题
  4. Android ramdisk.img system.img userdata.img 介绍与使用
  5. sql server备份和还原
  6. MySql 查询时 为NULL 设置默认值
  7. arm 驱动基础:查询方式的按键驱动程序
  8. mysql数据库设计中的14个技巧
  9. three.js中文文档下载_threejs基础学习一
  10. linux下项目开发加载动态库:ldconfig与 /etc/ld.so.conf
  11. 抖音数据统计_抖音直播带货数据分析(最新教程)
  12. DMAc-TRZ cas:1628752-98-6,双[4-(N-吩噁嗪)苯基]硫砜,热延迟荧光材料TADF
  13. 杨军的计算机等级证书,杨军-中国科学院大学-UCAS
  14. 聚苯乙烯/二氧化硅荧光微球/硫化镉-聚苯乙烯微球CdS/PS复合微球的制备方式
  15. 一个屌丝程序猿的人生(七十六)
  16. Windows 右键菜单卡顿很慢问题处理
  17. 2021年焊工(初级)免费试题及焊工(初级)实操考试视频
  18. 计算机开机无法选择用户界面,带有win10双系统中win10关机后开机无法进入启动菜单选择及BIOS界面的原因你知道吗?...
  19. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第47讲:PHP程序设计中的文件操作
  20. 史上最具争议的博弈游戏,我用概率论、博弈论找到了答案

热门文章

  1. Android 导出traces.txt 遇到的坑
  2. Android 布局错乱 Android花屏
  3. 一文读懂MQTT协议
  4. 架构组件专栏 | ViewModel深入浅出
  5. androidstudio常见问题
  6. IOS开发笔记17-Object-C中的继承
  7. Java学习笔记18
  8. ThreadLocal内存泄漏问题
  9. Broadcast应用场景分析
  10. (0062)iOS开发之Xcode自带单元测试UnitTest