编写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表示换行,那这样不是换行了两次吗? 为了解决疑 ...
随机推荐
- 【JAVAWEB学习笔记】30_WEB总结_思维导图
可以在浏览器放大来查看细节,或者另存为图片到本地电脑查看.
- 【BZOJ 4170】 4170: 极光 (CDQ分治)
4170: 极光 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 121 Solved: 64 Description "若是万一琪露诺(俗 ...
- 【尺取法】POJ3061 & POJ3320
POJ3061-Subsequence [题目大意] 给定长度微n的数列整数及整数s.求出总和不小于s的连续子序列的长度的最小值.如果节不存在,则输出0. [思路] 尺取法五分钟裸裸裸~刷水刷出了罪恶 ...
- 在MySQL字段中使用逗号分隔符
大多数开发者应该都遇到过在mysql字段中存储逗号分割字符串的经历,无论这些被分割的字段代表的是id还是tag,这个字段都应该具有如下几个共性. 被分割的字段一定是有限而且数量较少的,我们不可能在一个 ...
- ACM -- 算法小结(十)素数的两种打表法
素数的两种打表法 下面介绍两种素数打表法,由于是两年前留下的笔记,所以没有原创链接~~ @_@!! 第一种疯狂打表法: #include<stdio.h> #include<math ...
- 实用在线小工具 -- Google URL Shortener
实用在线小工具 -- Google URL Shortener 当你想分享一些你觉得有趣的东西,但是那个链接太长,以至于贴上去一大片.比如在微博上分享一张图片,然后贴上去图片的链接,url ...
- UESTC 2015dp专题 E 菲波拉契数制 dp
菲波拉契数制 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descr ...
- tomcat使用Eclipse进行远程调试(线上调试)
什么是远程调试,就是在A机器上利用Eclipse单步跟踪调试B机器上的Web应用,当然调试A机器上Web应用也是没有问题的,90%我都是调试本机的Web应用,远程调试的意义我想我不用说了,大家都会想到 ...
- ubuntu systemtap-sdt-dev
http://kr.archive.ubuntu.com/ubuntu/pool/universe/s/systemtap/systemtap-sdt-dev_3.0-7_amd64.deb
- Centos7安装配置tomcat 9并设置自动启动
原文:https://blog.csdn.net/stinkstone/article/details/78082725 1.官网下载安装包 这里选择适合Linux的安装包,下载到本地后上传到cent ...