编写nios-shell时想到的问题-回车vs换行
在编写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检測不到一行结束标志,就连续显示
编写nios-shell时想到的问题-回车vs换行的更多相关文章
- linux c语言编写一个shell壳
目的:我们要用c语言编写一个shell可以运行在linux机器上的. 介绍:shell所在的层次 我们要做的是操作系统,用于用户与操作系统进行交互的myhsell 思路:用户输入 一行字符串,我们先 ...
- 编写WCF服务时右击配置文件无“Edit WCF Configuration”(编辑 WCF 配置)远程的解决办法
原文:编写WCF服务时右击配置文件无“Edit WCF Configuration”远程的解决办法 今天在看<WCF揭秘>书中看到作者提出可以在一个WCF Host应用程序的App.Con ...
- Linux如何编写自启动shell脚本
1.需求分析 在很多情况下,程序员都做着重复枯燥的工作,虽然这些工作也是必须的,其实这些重复性的工作可以执行脚本替代:今天笔者就如何编写自启动shell脚本减少程序员开启服务器后的环境开启工作: 2. ...
- 【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。
Eclipse中导入外部jar包 在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可. 工具/原料 Eclipse 需要 ...
- 登陆获取shell时的配置文件加载过程
最近遇到一台ubuntu服务器登陆时默认语言环境变量变成posix问题, 导致中文显示乱码,影响程序的正常运行 # locale LANG= LANGUAGE= LC_CTYPE="POSI ...
- 使用Sublime编写HTML页面时发现,虽然已经设置好了UTF-8的编码格式,但却发现HTML页面的汉字仍然是乱码。
相信有些同学在使用Sublime编写HTML页面时发现,虽然已经设置好了UTF-8的编码格式,但却发现HTML页面的汉字仍然是乱码吧.我今天就遇到了这样的问题. 第一步:重新设置一下你的meta,设置 ...
- 编写html页面时常见的问题(转)
编写html页面时常见的问题(一) 说到写页面,肯定有很多人在刚接触编写页面这一块时遇到很多细节和兼容性的问题,那么在这里我总结一些经常遇到的小问题.希望能够帮助学习页面搭建的初学者! 虽然说ie ...
- DDK编写64位驱动时加入x64汇编的方法
上篇讲了如何在编写x64应用程序时加入x64汇编,这里来说说如何在编写x64驱动时加入x64汇编. 一.在asm文件中单独编写功能函数 比如要实现一个64位的加法函数,原型如下: ULONG64 my ...
- 细说"回车"和"换行"的故事
引言 最近在php还有c#以及memcache的shell当中经常看到\r\n的写法,刚开始还没注意, 不过后面感觉这样写有些不对头,\r表示回车 \n表示换行,那这样不是换行了两次吗? 为了解决疑 ...
随机推荐
- Scrapy爬取女神照片
使用Scrapy趴一趴美女图 Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自 ...
- Python协程(中)
协程嵌套 使用async可以定义协程,协程用于耗时的io操作,我们也可以封装更多的io操作过程,这样就实现了嵌套的协程,即一个协程中await了另外一个协程,如此连接起来. import asynci ...
- git实现github仓库和本地仓库同步
配置git 安装git以后,打开git bash,首先要对git进行配置,输入 git config --global username "你的名字" git config --g ...
- 【BZOJ 4070】【APIO 2015】雅加达的摩天楼
http://www.lydsy.com/JudgeOnline/problem.php?id=4070 分块建图. 对每个\(P_i\)分类讨论,\(P_i>\sqrt N\)则直接连边,边数 ...
- BZOJ 4566 JZYZOJ 1547 [haoi2016T5]找相同子串 后缀数组 并查集
http://172.20.6.3/Problem_Show.asp?id=1547 http://www.lydsy.com/JudgeOnline/problem.php?id=4566 单纯后缀 ...
- 2017-2018-1 JAVA实验站 冲刺 day06
2017-2018-1 JAVA实验站 冲刺 day06 各个成员今日完成的任务 小组成员 今日工作 完成进度 张韵琪 进行工作总结.博客.小组成员头像 100% 齐力锋 找背按钮声音 100% 张浩 ...
- [bzoj1025][SCOI2009]游戏 (分组背包)
Description windy学会了一种游戏.对于1到N这N个数字,都有唯一 且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,……,N写一排在纸上.然后再在这一排下面写上它们 ...
- 简单DP+暴力 POJ 1050
To the Max Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 45915 Accepted: 24282 Desc ...
- Loj10172 涂抹果酱
题目描述 Tyvj 两周年庆典要到了,Sam 想为 Tyvj 做一个大蛋糕.蛋糕俯视图是一个 N×M 的矩形,它被划分成 N×M 个边长为 1×1 的小正方形区域(可以把蛋糕当成 NNN 行 MMM列 ...
- BZOJ 4027: [HEOI2015]兔子与樱花 树上dp
4027: [HEOI2015]兔子与樱花 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...