博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回车符和换行符的纠纷
阅读量:3958 次
发布时间:2019-05-24

本文共 1626 字,大约阅读时间需要 5 分钟。

回车符和换行符的纠纷

回车符换行符由来

​ 在计算机还没有出现之前,有一种叫做电传打字机的机械打字机,每秒可以打 10 个字符。但是它有一个问题,就是打完一行换行的时候,要用 0.2 秒,正好可以打两个字符。要是在这 0.2 秒里面,又有新的字符传过来,那么这个这个字符将丢失。

​ 于是,研究人员想了个办法解决这个问题,就是在每行后面添加两个表示结束字符。一个叫做 ”回车“ ,告诉打字机把打印头定位在左边界,不卷动滚轮;另一个叫做 ”换行“ ,告诉打字机把滚筒卷一格,不改变水平位置。这就是 ”换行“ 和 ”回车“ 的由来。

​ 后来,计算机发明了,这两个概念也就被搬到了计算机上面。但是,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费,加一个就可以。于是就出现了分歧。(上面内容引自百度文库《回车符与换行符的区别》)


回车符和换行符的区别

​ 上面说了由来,这是让大家了解到为啥会有这两个东西。接下来我们首先了解一下系统实操中什么是回车符和换行符,以便于进行区分。

换行符就是另起一个新行,并且将光标移至新行的行首。

回车符就是将光标移至当前行的行首,回车符在编码中对用的是 ‘\n’。

注意: 在这里特别提一下回车符 ,他每次移至当前行首时,如果再写入内容,会把当前行以前的内容给覆盖掉。就以一个简单的代码做一下演示。下面的代码运行之后最终只会输出 5 , 这是前面所提到的内容覆盖。首先终端输出 0 ,之后将输出位置定位到当前行行首(即输出 0 所在行),第二次先输出 1,这里的 1 会覆盖前面的 0,之后又将输出位置定位到行首,以此类推,最终只会输出 5。

int main(){	int arr[] = { 0,1,2,3,4,5 };		for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {		cout << arr[i]<< "\r";	}	cout << endl;	return 0;}// 运行结果 5

编码中的回车符换行符

回车符对应的编码是 ‘\r’ ,控制字符为 CR,即Carriage Rerturn。r 对应的英文是 return,即返回到当前行行首,这样更便于理解记忆。

换行符 对应的编码是 ‘\n’ ,控制字符是LF,即Line Feed。n 对应的英文是 newline,即返回到新行的行首。


Windows

‘\r’ ASCII码转换为十进制数为 013。

‘\n’ ASCII码转换为十进制数为 010。

在Windows系统中每行的结尾是 <回车> <换行>,即“\r\n"。下面我们便来进行验证。

​ 在Windows下我们建立一个txt文本文件,里面的内容只利用键盘输入两个 Enter 键(记住是两个,光标就会定位到第三行,第三行连回车都没有)。如下图所示,文本文件中的光标在第三行,但是却没有实际的文本内容,通过属性查看,该文本文档占用四字节。

在这里插入图片描述

之后,我们再用UE打开该文本文档,并且用十六进制查看。结果如图所示。0D – 013 0A – 010

在这里插入图片描述

这也就表示Woindows键盘输入的换行符确实是由 “\r\n” 构成,即 “013 010”。


Linux

Linux系统中,每行的结尾只有 <换行>,即 “\n”。

同样的,下面我们到 Linux 系统中去查看下:

​ 同上面一样,在 Linux 系统中,创建 一个普通文件,照例只输入两个 Enter 回车键

在这里插入图片描述

​ 然后通过十六进制打开:

在这里插入图片描述

​ 不出所料,产看结果为 0a 0a 0a —> 010 010 010 —> \n \n \n 。也就是说 Linux 系统中的确结尾是由换行符 ‘\n’ 组成。但值得注意的是不同于 Windows,输入了两个 Enter 键,有三个结尾符,这是因为 Linux 会在每一行都为你添加 ‘\n’,也就是说 Linux 第三行有结尾符,而 Windows 却没有。

转载地址:http://zbozi.baihongyu.com/

你可能感兴趣的文章
The Most Widely Used Java Libraries
查看>>
简单在单机使用apache-james(开源邮件服务器)
查看>>
lsof 快速起步
查看>>
使用ScribeFire方便地发布blog
查看>>
跨平台Java程序注意事项
查看>>
Python字符与数字的相互转换
查看>>
C 指针解读
查看>>
有关乱码的处理---中国程序员永远无法避免的话题
查看>>
JSP的运行内幕
查看>>
python超简单的web服务器
查看>>
代理模式、静态代理、动态代理、aop
查看>>
Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00
查看>>
大型Web2.0站点构建技术初探
查看>>
机器学习算法汇总:人工神经网络、深度学习及其它
查看>>
解决Spring中AOP不能切入Struts的DispatchAction方法的问题
查看>>
出国以后才知道英语应该怎么学
查看>>
计算机专业权威期刊投稿经验总结
查看>>
如何在三个月内学会一门外语?
查看>>
看看你对Linux到底了解多少?
查看>>
网上看到的:ARM入门最好的文章(转)
查看>>