linux下面 r和 n的区别,【冷知识】关于/r与/n以及 /r/n 的区别总结
首先:
\r就是"回到行首",\n就是"到下一行"
即:\r是回车,\n是换行,前者使光标到行首,后者使光标下移一格。
通常用的Enter是两个加起来的,即\r\n
直接这么说你可能没啥感觉,但是真正到了编码的时候你就发现了——全TM是吭
先举个栗子瞅瞅:
printf aaaa \r\n bbbbbb
print ccccc \n ddddddd
print eeeeeeeee \r ffffff
上面这段代码的输出结果你可能一眼就看出来了。
你说是这样:
aaaa
bbbbbb
ccccc
ddddddd
eeeeeeeee
ffffff
但是真的是你想的那样吗?
事实上结果是下面这样
aaaa
bbbbbb
ccccc
ddddddd
ffffff
由来:
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有“”,即“\n”;
Windows系统里面,每行结尾是“”,即“\n\r”;
Mac系统里,每行结尾是“”。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
后果:
现在再来看看咱们开头举得那个栗子:
printf aaaa \r\n bbbbbb
print ccccc \n ddddddd
print eeeeeeeee \r ffffff
编程时(无论是windows系统还是linux系统)
\r 就是return 回到本行行首,这就会把这一行以前的输出覆盖掉,具体内部细节就像是输出缓冲区重新开始缓冲了一样
而\n 是换行+回车,把光标先移到下一行,然后换到行首->也就是下一行的行首
所以若是看到代码里面本来应该换行的地方变成了整行、
本来该输出整行的时候却只输出了一部分、
那么,查一查是不是你的\r,\n,\r\n哪个用错了吧!(换平台尤其要注意)
linux下面 r和 n的区别,【冷知识】关于/r与/n以及 /r/n 的区别总结相关推荐
- R语言 plot swimmer_R语言基础知识学习(四):R中的画图函数--plot()函数
plot()函数是R中基本的画x-y两个变量的函数,其用法如下为:plot(x, y, ...) 例如:首先我用runif()函数产生了两列随机数:x1,y1,然后用plot()函数直接画图: > ...
- excel判断字符串包含另一个字符串_【前端冷知识】如何正确判断一个字符串是数值?...
在网页中,我们从用户输入的内容中获取的值通常是字符串,但是有时候我们希望用户输入的内容一定要能转成数值: <input id="userInput"> userInpu ...
- linux命令行下命令参数前的一横(-)和两横(--)的区别
linux命令行下命令参数前的一横(-)和两横(--)的区别 原文转自:http://blog.csdn.net/songjinshi/article/details/6816776 在解释这些区别之 ...
- Linux常见的发行版SUSE、Ubuntu、RedHat、CentOS、Fedora的联系和区别
Linux常见的发行版SUSE.Ubuntu.RedHat.CentOS.Fedora的联系和区别 一.SUSE SUSE是指SUSE Linux ,是德国 SuSE Linux AG公司发行维护的L ...
- cuda合并访问的要求_CUDA优化的冷知识 5 | 似是而非的计时方法
这一系列文章面向CUDA开发者来解读<CUDA C Best Practices Guide> (CUDA C最佳实践指南) 大家可以访问: https://docs.nvidia.com ...
- IT冷知识--每日一练
目录 一.IT冷知识--每日一练 战火中的程序员 讽刺的名字 爱,死亡和机器人 浏览器的新时代 C++ 的类型是什么? <纸牌屋>是谁制作的? 盖茨的游戏梦 第一次冒险 铭记一生的悲剧 蠕 ...
- Linux包管理器及包安装工具基础知识
部分内容摘入出处:yum与apt的区别:原创文章,转载请注明出处. 文章目录 一.概述 处理器架构 发行版概念 二.两大主流发行版 RedHat发行系列 Debian发行系列 三.命令与包格式区别 各 ...
- 120个IT冷知识,看完就不愁做选择题了
目录 IT冷知识 01-10 1.冰淇淋馅料 2.蠕虫起源 3.Linux和红帽子 4."间谍软件"诞生 5.游戏主机的灵魂 6.Linux之父 7.NetBSD的口号 8.安卓起 ...
- 面试 Linux 运维工作至少需要知道哪些知识?
点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明 ...
- Linux驱动开发系列:整理入门Ubuntu知识
文章目录 Linux驱动开发 一.Linux驱动开发第一期:Ubuntu基础入门 1.Vmware虚拟机安装 2.Vmware内Ubuntu功能介绍 2.1 启动栏介绍 2.2 Ubuntu连接USB ...
最新文章
- c# try-finally有什么用
- 【AcWing 243. 一个简单的整数问题2】
- Apache Payara:让我们加密
- python 读取csv文件转成字符串_从CSV读取到 dataframe pandas python时dict对象转换为字符串...
- 360智能工程中心期待你的加入
- 软件测试c s系统和b s,对C/S与B/S架构的产品进行系统测试,有哪些不同点与相同点?...
- swift项目调用OC库 和OC项目 在swift文件里面全局调用OC库
- JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度
- 解决:本地计算机上的MySQL80服务启动后停止,某些服务在未由其他服务或者程序使用时将自动停止
- 服务器网口聚合操作文档,服务器网口聚合怎么操作
- 动态规划(DP)算法初识
- RedHat 8 dnf源配置
- Python计算圆的周长与面积
- 使用PHP实现密保卡功能
- openwrt 打印 APP_HP Smart Tank 511/518/519利用安卓手机设置无线局域网打印方法之二...
- 头歌-信息安全-病毒分析与防御
- 深度学习在文档矫正中的应用
- 题9.1:定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天, 注意闰年问 题。
- 谭浩强C++ 第四章
- Android程序在模拟器上打不开(秒退)