回车符号和换行符号原来是这样产生的
今天看鸟哥的私房菜,看到tr 命令时候,有个示例提到了换行和回车,之前一直没去想过回车和换行的区别,今天想了下有些许好奇,找到了以下文档,瞬间明白了。
关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“ <回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号【^M即是\r】。原理是,linux/unix中的换行符\n在windows下被解释成一个黑点,而不是换行;windows下的换行符\r\n(顺序不能反)在linux下,\n被解释为换行,但是\r被解释为^M(这是Linux等系统下规定的特殊标记,占一个字符大小,不是 ^ 和 M 的组合,打印不出来的)。Linux下很多文本编辑器(命令行)会在显示这个标记之后,补上一个自己的换行符,以避免内容混乱(只是用于显示,补充的换行符不会写入文件,有专门的命令将Windows换行符替换为Linux换行符)。 UNIX/Linux系统下的换行符在Windows系统的文本编辑器中会被忽略,整个文本会乱成一团。windows换行是\r\n,十六进制数值是:0D0A。
LINUX换行是\n,十六进制数值是:0A
所以在linux保存的文件在windows上用记事本看的话会出现黑点,我们可以在LINUX下用命令把linux的文件格式转换成win格式的。
unix2dos 是把linux文件格式转换成windows文件格式
dos2unix 是把windows格式转换成linux文件格式。linux下删除windows换行符^M
OJ判题时发现一个问题:用%c读入的代码都会报wa。后来发现跟scanf有关。在linux下使用%c会读到\n和\r两个字符。所以需要将^M(也就是\r)字符删掉
删除方法不少。找了一个比较简单的。
要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符unix 下换行符只有: \n
Dos 下换行符有:\r\n
具体的, \r的ascii 码是:13
\n的ascii 码是:10
原文地址:https://www.cnblogs.com/everest33Tong/p/6202446.html
回车符号和换行符号原来是这样产生的相关推荐
- 回车符号和换行符号的区别
回车符号和换行符号产生背景: 关于"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别. 在计算机还没有出现 ...
- 回车符号和换行符号产生背景
回车符号和换行符号产生背景: 关于"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别. 在计算机还没有出现之前,有 ...
- C/C++编程:回车符和换行符
回车符号和换行符号产生背景 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒, ...
- Javascript去除回车换行符号和PHP去除回车换行符的方法
在不同的操作系统,回车换行符号是不一样的,看下面: 首先说说\n,\r,\t \n 软回车: 在Windows 中表示换行且回到下一行的最开始位置 在Linux.unix 中只表示换行,但不会回到下一 ...
- linux系统vim下输入回车换行符号的解决方法
linux系统vim下输入回车换行符号的解决方法 遇到问题 vim再linux 下回车后符号为'\r', 而不是我们想要的像windows下为'\r\n' 怎么解决呢?解决方法如下: 1. linux ...
- 微信小程序wxparse特殊解析空格,解析↵换行符号
因为在实际的项目中使用wxparse的时候,发现空格和换行解析不了,就进行的源码的查看及修改, (一).解决↵换行符号解析不了的方法 在微信小程序中换行\n需要再在text中进行实现,但是wxpars ...
- html 换行特殊符号,html中的换行符号
html中的换行符号: Word中向下的箭头↓符号怎么删除?手动换行符删除方法,缺失:html中的换行符号12244/11 以下是的一些我们精选的Word中向下的箭头↓符号怎么删除?手动换行符删除方法 ...
- 万恶的windows换行符号
今天工作中的一个诡异现象是以为windows的换行符号导致的 关于windows和linux的换行符号差异请看下面这篇文章 http://blog.csdn.net/nclhl/article/det ...
- UnityC#字串如何获取换行符号-最基础的字串处理方法,也最容易常见错误
C#里面的换行符号是 \r\n (Java的换行符号就不是 \r\n 了?应该这是windows的换行符号,mac并不如此,) 以下内容并没在mac 和 linux测过(一般linux也不需要字符串) ...
最新文章
- logstic 回归
- python排序链表_合并K个排序链表
- 【安卓开发 】Android初级开发(九)Android中封装View提供接口供点击事件回调的方法及使用
- Screenium 3 for Mac - 强大的屏幕录制编辑器
- iOS开发 -- 发送JSON数据给服务器
- 小学多媒体计算机室管理计划,多媒体教室管理工作计划
- Python自动化结算工资和统计报表
- 中国互联网创业大咖(收藏)
- 五笔输入法 快速入门 二小时基本了解五笔
- 各种软件以及插件官网地址 echarts Vscode 阿里云图标库 鼠标图标
- gh-ost学习笔记 试验代码学习
- 5 月最大的 GameFi 崩溃受害者能否在熊市中生存?| May Monthly Report
- PERMISSION_UNFINISHED
- java 字符串转时间,时间转字符串
- Java怎样把时间转成毫秒_如何转换时间格式 java如何把时间格式转为毫秒
- 飞卡日常进度之山外上位机的二值化模式和灰度模式
- python2基础难点_第2课Python基础知识,第二课,python,要点
- 12本大神级程序员必读书籍,从菜鸟走向牛逼!
- C语言中文文档、C语言文档大全(网址)
- BT种子、磁力、ED2K下载工具_wentfar·tsao