0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

文本或源代码中\n 和 \r 的用法及区别

如意 来源:strongerHuang微信公众号 作者:strongerHuang微信公众 2020-08-24 17:00 次阅读

我们使用printf打印时基本都会用到 \n 和 \r 之类控制字符,比如:

printf(“hello world!\r\n”);

那你知道这些 \n 和 \r 的区别吗?

一、关于 \n 和 \r

在ASCII码中,我们会看到有一类不可显示的字符,叫控制字符,其中就包含\r 和 \n 等控制字符。

文本或源代码中\n 和 \r 的用法及区别

\n : 换行符(newline),另起一行,对应ASCII值10(缩写:LF)。

\r : 回车符(return),回到一行的开头,对应ASCII值13(缩写:CR)。

回车和换行来源:

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

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

二、\n 和 \r差异

后来,计算机发明了,这两个概念也就被搬到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

‘\r’是回车,‘\n’是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来。

有的编辑器只认\r\n,有的编辑器则两个都认。所以要想通用的话,最好用\r\n换行。

在微软的MS-DOS和Windows中,使用“回车CR(‘\r’)”和“换行LF(‘\n’)”两个字符作为换行符;

Windows系统里面,每行结尾是 回车+换行(CR+LF),即“\r\n”;

Unix系统里,每行结尾只有 换行CR,即“\n”;

Mac系统里,每行结尾是 回车CR 即‘\r’;

所以我们平时编写文件的回车符应该确切来说叫做回车换行符;

三、影响

一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

Linux保存的文件在windows上用记事本看的话会出现黑点。这个应该很多人都看到过,比如,Keil代码中直接显示换行符:

文本或源代码中\n 和 \r 的用法及区别

互相转换

在linux下,命令unix2dos 是把linux文件格式转换成windows文件格式,命令dos2unix 是把windows格式转换成linux文件格式。

在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换。 经过这种传输的文件字节数可能会发生变化。

如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本。一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ASCII
    +关注

    关注

    5

    文章

    172

    浏览量

    35095
  • 源代码
    +关注

    关注

    96

    文章

    2945

    浏览量

    66735
  • 文本显示器
    +关注

    关注

    0

    文章

    11

    浏览量

    20846
收藏 人收藏

    评论

    相关推荐

    java文本编辑器下载(源代码)

    java文本编辑器有哪些?给大家分享一下免费的java文本编辑器下载(源代码)地址。好用。htmlArea v2.03A free WYSIWYG editor replacement for fields.from your
    发表于 06-02 21:29 31次下载

    快速编辑源代码

    快速编辑源代码 实验要求:通过实验,了解网页源代码编写结构机利用Dreamweaver查看网页自动生成的源代码,掌握HTML的常用标记及对网页
    发表于 02-10 15:00 10次下载

    floodFill函数用法示例

    《OpenCV3编程入门》书本配套源代码floodFill函数用法示例
    发表于 06-06 15:09 2次下载

    erode函数用法示例

    《OpenCV3编程入门》书本配套源代码erode函数用法示例
    发表于 06-06 15:09 1次下载

    boxFilter函数用法示例

    《OpenCV3编程入门》书本配套源代码boxFilter函数用法示例
    发表于 06-06 15:09 2次下载

    canny函数用法示例

    《OpenCV3编程入门》书本配套源代码canny函数用法示例
    发表于 06-06 15:20 3次下载

    HoughLines函数用法示例

    《OpenCV3编程入门》书本配套源代码:HoughLines函数用法示例
    发表于 06-06 15:20 3次下载

    HoughLinesP函数用法示例

    《OpenCV3编程入门》书本配套源代码:HoughLinesP函数用法示例
    发表于 06-06 15:20 2次下载

    Laplacian函数用法示例

    《OpenCV3编程入门》书本配套源代码:Laplacian函数用法示例
    发表于 06-06 15:20 3次下载

    resize函数用法示例

    《OpenCV3编程入门》书本配套源代码:resize函数用法示例
    发表于 06-06 15:20 2次下载

    pyrDown函数用法示例

    《OpenCV3编程入门》书本配套源代码:pyrDown函数用法示例
    发表于 06-06 15:20 16次下载

    Scharr函数用法示例

    《OpenCV3编程入门》书本配套源代码:Scharr函数用法示例
    发表于 06-06 15:20 14次下载

    python的html基本结构及常见文本标签源代码免费下载

    本文档的主要内容详细介绍的是python的html基本结构及常见文本标签源代码免费下载。
    发表于 12-04 08:00 0次下载
    python的html基本结构及常见<b class='flag-5'>文本</b>标签<b class='flag-5'>源代码</b>免费下载

    嵌入式开发, \r和\r\n区别

         在嵌入式开发,经常会涉及到用UART去打印一些运算中间层数据作为调试,或者是打印输出结果。为了处理数据的方便性,经常会涉及到数据的换行操作。那么在换行过程\r和\r\
    发表于 11-03 09:21 11次下载
    嵌入式开发<b class='flag-5'>中</b>, \<b class='flag-5'>r</b>和\<b class='flag-5'>r</b>\<b class='flag-5'>n</b>的<b class='flag-5'>区别</b>

    pythontext的用法

    可以使用text(字符串)进行各种操作,例如创建、访问、修改、连接、比较和搜索等。下面将详细介绍Python中使用text的各种用法。 创建和访问文本: 在Python,我们可以使用单引号
    的头像 发表于 11-23 15:46 3608次阅读