博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编写nios-shell时想到的问题-回车vs换行
阅读量:5041 次
发布时间:2019-06-12

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

在编写nios上类shell用户交互代码时。由于要检測终端输入字符。所以想到了这个问题,故分析之。

回车符的ascii码,ASCII码13 ‘\r’
换行符的ascii码。ASCII码10 ‘\n’
符号 ASCII码 意义
\n 10 换行NL
\r 13 回车CR

回车 \r 本义是光标又一次回到本行开头。r的英文return,控制字符能够写成CR,即Carriage Return

换行 \n 本义是光标往下一行(不一定到下一行行首)。n的英文newline。控制字符能够写成LF,即Line Feed
这里面还有个小故事(来源于网络)
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意。每秒钟能够打10个字符。可是它有一个问题,就是打完一行换行的时候。要用去0.2秒,正好能够打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是。研制人员想了个办法解决问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”。告诉打字机把打印头定位在左边界;还有一个叫做“换行”。告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也能够看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。

那时,存储器非常贵,一些科学家觉得在每行结尾加两个字符太浪费了。加一个就能够。于是,就出现了分歧。

/======================================/
\n: UNIX 系统行末结束符
\r\n: window 系统行末结束符
\r: MAC OS 系统行末结束符
/======================================/
以下做几个实验。

1、win 中的情况
‘\n’的測试
代码
cout<<”ssss”<<”\n”<<”ee”;
结果
ssss
ee
‘r’的測试
代码
cout<<”ssss”<<”\r”<<”ee”;
结果
eess
文件里换行的实验
新建文件txt,输入
this is test n and r【回车】
在notepad++中显示为
这里写图片描写叙述
然后用二进制查看器打开这个文件
这里写图片描写叙述
我们看到回车之后实际是加入了两个字符串,ascii为13和10。也就是‘\r’’\n’

新建文件txt。输入

this is test n and r
在notepad++中显示为
这里写图片描写叙述
然后用二进制查看器打开这个文件
这里写图片描写叙述
从上面两个实验可知在一行结束时,win不会默认加上其它字符。仅仅有手动加上回车时,会自己主动加入上两个字符。


在linux中測试

‘\n’的測试
代码
这里写图片描写叙述
结果
这里写图片描写叙述
‘\r’的測试
代码
这里写图片描写叙述
结果
这里写图片描写叙述
文件里换行实验
vim linux_nr.txt
this is test n and r[回车]
将文件用二进制查看器打开后发现
这里写图片描写叙述
相应的是两个回车字符
vim linux_nr.txt(不回车)
this is test n and r
将文件用二进制查看器打开
这里写图片描写叙述
对比上面两组,linux系统中默认一行的结束是’\n’换行,所以手动回车,产生的是第二行结束符

将linux_nr.txt改动为

这里写图片描写叙述
然后在win下打开
看看吧
这里写图片描写叙述
二进制查看器结果为
这里写图片描写叙述

所以这样的现象发生的原因是。在linux中每一行是以’\n’为标志,然而win中是以‘\r’‘\n’为结束标志的,所以,win检測不到一行结束标志,就连续显示

转载于:https://www.cnblogs.com/cxchanpin/p/7305074.html

你可能感兴趣的文章
如何一个pdf文件拆分为若干个pdf文件
查看>>
web.xml中listener、 filter、servlet 加载顺序及其详解
查看>>
前端chrome浏览器调试总结
查看>>
获取手机验证码修改
查看>>
数据库连接
查看>>
python中数据的变量和字符串的常用使用方法
查看>>
等价类划分进阶篇
查看>>
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
java 字符串转json,json转对象等等...
查看>>
极客前端部分题目收集【索引】
查看>>
第四天 selenium的安装及使用
查看>>
关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)...
查看>>
KMPnext数组循环节理解 HDU1358
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>
Inoodb 存储引擎
查看>>
数据结构之查找算法总结笔记
查看>>
Linux内核OOM机制的详细分析
查看>>
Android TextView加上阴影效果
查看>>