文本或代码中 \n 和 \r 的区别

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

printf("hello world!\r\n");

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

# 关于 \n   \r 

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

\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代码中直接显示换行符:

互相转换

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

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

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

示例代码:

#include "stdio.h"int main()
{printf("hello,World");printf("\n");printf("\t");printf("#");printf("\r");printf("@"); return 0; 
}

图解:

程序输出:

转自:strongerHuang

  推荐阅读:

    专辑|Linux文章汇总

    专辑|程序人生

    专辑|C语言

嵌入式Linux

微信扫描二维码,关注我的公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中兴5G和展锐原厂芯片开发,怎么选?

最近跟一个读友聊天,谈到的还是offer选择的问题,我觉得讨论这个问题比讨论技术问题更加重要「特别是刚出校门的学生,选择一个好的行业比刚毕业的薪资重要」。当然了,肯定有人跟我说我不务正业,整天瞎BB,好的…

40张动图揭示各种传感器工作原理!

应变加速度感应器▼称重式料位计▼电子皮带秤重示意图▼电子吊车秤▼荷重传感器用于测量汽车衡的原理▼荷重传感器的应用▼TiO2氧浓度传感器结构及测量电路▼布料张力测量及控制原理▼直滑式电位器控制气缸活塞行程▼电位器式传感器▼陶瓷湿度传感器▼多孔性氧化铝湿敏电容原理…

lpad与rpad

--lpad(str, n, [pad_str])--rpad(str, n, [pad_str])-- 如果n<length(str),则显示substr(str,1,n)-- 否则&#xff0c;分别从左边和右边使用pad_str进行填充-- 其中n表示最后输出结果字符串的长度-- 如果pad_str为空&#xff0c;则用空格来填充select lpad(abc,2,#) from d…

git log 你学废了吗?

# 前言Git 是一个工具&#xff0c;用来管理代码的东西&#xff0c;要是Git 使用不好&#xff0c;确实还是挺尴尬的&#xff0c;我今晚看了个文章&#xff0c;发现Git log 是的玄机都还很多。比如这样的# git log --help如果觉得git 还不会用&#xff0c;可以看看git log --help…

别错过校招

我不是很想讨论这个问题&#xff0c;也没有想过我现在要用这个话题做文章的标题&#xff0c;这篇文是提醒准备毕业的同学们&#xff0c;校招非常重要。今天晚上&#xff0c;一个微信好友问「发哥&#xff0c;我现在研究生毕业&#xff0c;但是自己的基础非常不好&#xff0c;也…

spring集成 log4j + slf4j

以maven web项目为例&#xff0c; 首先、在pom文件引入相关依赖&#xff0c;如下&#xff08;spring官网文档有介绍&#xff09;&#xff1a; <dependencies><!-- spring 相关 --><dependency><groupId>org.springframework</groupId><artifa…

90后中国程序员“黑吃黑”博彩网站,半年获利256万,判刑11年半

一个90后程序员&#xff0c;在短短两年的时间里&#xff0c;非法控制67万台计算机&#xff0c;还利用漏洞“黑吃黑”博彩网站&#xff0c;半年从中获利256万余元……近期&#xff0c;浙江省杭州市西湖区人民法院对这起黑客大案进行了一审宣判。法院以诈骗罪、非法控制计算机信息…

用一张图片告诉你芯片设计

#推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言嵌入式Linux微信扫描二维码&#xff0c;关注我的公众号

【学习总结】Markdown 使用的正确姿势

参考资料&#xff1a; Learning-Markdown 入门参考 注&#xff1a;原博可能对GitHub中的Markdown格式更适用。ps&#xff1a;在王熊猫的GitHub里也有相关格式的攻略&#xff0c;可一并参考学习。关于表情的cheatsheet ? &#xff08;似乎不太好&#xff0c;哈哈&#xff09;1、…

MTK 平台TP调试遇坑

#前言最近在调试我们项目上的TP驱动&#xff0c;奈何一直不能使用&#xff0c;而且这个项目的硬件确定是没有问题的「这个是前提」&#xff0c;我们在软件上提升了SDK基线&#xff0c;在之前的基线版本上软件是没有问题的。然后我就赶紧检查了两个方面确定TP的供电是不是正常的…

51nod 1379 索函数

Fib[0]0,Fib[1]1,Fib[n]Fib[n-1]Fib[n-2] if n>1. 定义索函数Sor(n)Fib[0]| Fib[1] |Fib[2]|…|Fib[n]. 给定整数n&#xff0c;要求计算Sor(n)%1,000,000,007(1e97). Input第1行&#xff1a;给出一个整数T&#xff0c;表示有T组数据。(1<T<10000) 第2行到T1行&#xf…

昨天小米股价大涨的背后:UWB芯片到底是个什么鬼?

小米10月12日发布了“一指连”小米UWB技术。小米称该技术赋予手机与智能设备空间感知能力&#xff0c;手机指向设备即可定向操控&#xff0c;使小米在“通往未来之路上再迈一步”。来源&#xff1a;腾讯自选股受此消息利好&#xff0c;截止10月12日收盘&#xff0c;小米集团港股…

当你使用微信和QQ的时候,请不要忘记ICQ这个伟大的公司!

距离 ICQ 创立已经 24 年了&#xff0c;仿佛已经跨越了一代人的年纪&#xff0c;而今&#xff0c;我们似乎无法在互联网上找到太多关于 ICQ 的信息。如果有人不知道 ICQ 的话&#xff0c;可以告诉你 ICQ 才是互联网通讯的鼻祖&#xff0c;而不是 QQ、MSN、微信、Facebook。ICQ …

db 是个什么鬼?

最近在处理音频部分的内容&#xff0c;我们讨论一个音频的时候&#xff0c;会谈到声音的大小&#xff0c;就是「分贝」。Decibels,分贝这其中还涉及一个东西&#xff0c;就是放大器&#xff0c;声音经过放大器后&#xff0c;就会变成放大后的声音&#xff0c;这个是硬件放大&am…

原创--DataGrid自动分页例子,通过存储过程

通过存储过程来进行DataGrid自动分页&#xff0c;效率很高&#xff0c;可以进行百万和千万级的分页自己通过50万条记录测试&#xff0c;翻至任何页&#xff0c;需时小于一秒呵呵&#xff0c;仅供自己以后察看使用&#xff0c;所以代码写的不很规范所需的存储过程如下&#xff1…

我看完大连理工研究生的遗书之后

可能是因为年纪大的一丢丢&#xff0c;看到这类新闻会觉得难受&#xff0c;也可能是因为自己也是父亲了&#xff0c;想到这位同学父亲的情况更加受不了。然后回头想想自己这些年的经历&#xff0c;很多次也有过结束生命来解决问题的想法&#xff0c;每次到了最关键的时候&#…

面试官:如何写出让 CPU 跑得更快的代码?

前言代码都是由 CPU 跑起来的&#xff0c;我们代码写的好与坏就决定了 CPU 的执行效率&#xff0c;特别是在编写计算密集型的程序&#xff0c;更要注重 CPU 的执行效率&#xff0c;否则将会大大影响系统性能。CPU 内部嵌入了 CPU Cache&#xff08;高速缓存&#xff09;&#x…

拼音输入法功能大比拼

使用电脑工作或在互联网大潮中冲浪的朋友都离不开输入法的使用&#xff0c;输入法种类繁多&#xff0c;让新接触电脑的朋友目不暇接&#xff0c;难以确定哪一款才是最适合的自己的输入法。 一、拼音走向主流 五笔逐渐衰落尽管目前市场上的输入法种类繁多&#xff0c;各种各样的…

循序渐进PYTHON3(十三) --8-- DJANGO之ADMIN

admin简单使用&#xff1a; 1.urls.py2.settings.py3.models.pyfrom django.db import modelsclassUserInfo(models.Model): uid models.AutoField(primary_keyTrue) user_name models.CharField(max_length30) email models.EmailField() memo models.TextField() img mo…

你见过出道即巅峰吗?

我不知道你们见过没有&#xff0c;反正我见过了。这个消息是我周五上班的时候收到的&#xff0c;这个是一位非电子专业转行嵌入式的同学&#xff0c;之前加我微信后&#xff0c;聊的不是很多&#xff0c;但是非常惊讶的是&#xff0c;刚刚毕业就拿到了一份非常不错的offer。但是…