在编写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换行的更多相关文章

  1. linux c语言编写一个shell壳

    目的:我们要用c语言编写一个shell可以运行在linux机器上的. 介绍:shell所在的层次 我们要做的是操作系统,用于用户与操作系统进行交互的myhsell 思路:用户输入  一行字符串,我们先 ...

  2. 编写WCF服务时右击配置文件无“Edit WCF Configuration”(编辑 WCF 配置)远程的解决办法

    原文:编写WCF服务时右击配置文件无“Edit WCF Configuration”远程的解决办法 今天在看<WCF揭秘>书中看到作者提出可以在一个WCF Host应用程序的App.Con ...

  3. Linux如何编写自启动shell脚本

    1.需求分析 在很多情况下,程序员都做着重复枯燥的工作,虽然这些工作也是必须的,其实这些重复性的工作可以执行脚本替代:今天笔者就如何编写自启动shell脚本减少程序员开启服务器后的环境开启工作: 2. ...

  4. 【eclipse jar包】在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可。

    Eclipse中导入外部jar包 在编写java代码时,为方便编程,常常会引用别人已经实现的方法,通常会封装成jar包,我们在编写时,只需引入到Eclipse中即可. 工具/原料 Eclipse 需要 ...

  5. 登陆获取shell时的配置文件加载过程

    最近遇到一台ubuntu服务器登陆时默认语言环境变量变成posix问题, 导致中文显示乱码,影响程序的正常运行 # locale LANG= LANGUAGE= LC_CTYPE="POSI ...

  6. 使用Sublime编写HTML页面时发现,虽然已经设置好了UTF-8的编码格式,但却发现HTML页面的汉字仍然是乱码。

    相信有些同学在使用Sublime编写HTML页面时发现,虽然已经设置好了UTF-8的编码格式,但却发现HTML页面的汉字仍然是乱码吧.我今天就遇到了这样的问题. 第一步:重新设置一下你的meta,设置 ...

  7. 编写html页面时常见的问题(转)

    编写html页面时常见的问题(一)   说到写页面,肯定有很多人在刚接触编写页面这一块时遇到很多细节和兼容性的问题,那么在这里我总结一些经常遇到的小问题.希望能够帮助学习页面搭建的初学者! 虽然说ie ...

  8. DDK编写64位驱动时加入x64汇编的方法

    上篇讲了如何在编写x64应用程序时加入x64汇编,这里来说说如何在编写x64驱动时加入x64汇编. 一.在asm文件中单独编写功能函数 比如要实现一个64位的加法函数,原型如下: ULONG64 my ...

  9. 细说"回车"和"换行"的故事

    引言 最近在php还有c#以及memcache的shell当中经常看到\r\n的写法,刚开始还没注意, 不过后面感觉这样写有些不对头,\r表示回车  \n表示换行,那这样不是换行了两次吗? 为了解决疑 ...

随机推荐

  1. python计数器Count

    python计数器Count # -*- coding:utf-8 -*- """ python计数器Counter 需导入模块collections "&qu ...

  2. 简单机器学习人脸识别工具face-recognition python小试,一行代码实现人脸识别

    摘要: 1行代码实现人脸识别,1. 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片.其中每个人一张图片,图片以人的名字命名.2. 接下来,你需要准备另一个文件夹,里面是你要识别的图片.3 ...

  3. vim自动补全插件YouCompleteMe的安装及配置

    原文地址: http://blog.csdn.net/shixuehancheng/article/details/46289811

  4. 【lct】bzoj1036 [ZJOI2008]树的统计Count

    题意:给你一棵树,点带权,支持三种操作:单点修改:询问链上和:询问链上max. 这里的Query操作用了与上一题不太一样的做法(上一题用那种做法,因为在边带权的情况下换根太困难啦): 先ChangeR ...

  5. 常用数据库validationQuery检查语句

    数据库 validationQuery Oracle select 1 from dual DB2 select 1 from sysibm.sysdummy1  mysql select 1  mi ...

  6. 2015 UESTC 数据结构专题C题 秋实大哥与快餐店 字典树

    C - 秋实大哥与快餐店 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 ...

  7. UESTC 2015dp专题 F 邱老师看电影 概率dp

    邱老师看电影 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descr ...

  8. CodeM资格赛2

    题目描述 组委会正在为美团点评CodeM大赛的决赛设计新赛制. 比赛有 n 个人参加(其中 n 为2的幂),每个参赛者根据资格赛和预赛.复赛的成绩,会有不同的积分.比赛采取锦标赛赛制,分轮次进行,设某 ...

  9. mybatis源码分析(5)-----拦截器的实现原理(动态代理+责任链)

    写在前面 MyBatsi 的拦截器模式是基于代理的代理模式.并且myBatis 的插件开发也是以拦截器的形式集成到myBatis 当中. MyBatis 的拦截器已经插件是在org.apache.ib ...

  10. pt-archive提速的实践经验

    最近遇到很多业务需求,需要进行数据导出工作,由于有格式要求,故之前一直使用mysqldump的方法. mysqldump -uuser -ppassword -S mysql.sock -t db t ...