zoukankan      html  css  js  c++  java
  • 编写nios-shell时想到的问题-回车vs换行

    在编写nios上类shell用户交互代码时。由于要检測终端输入字符。所以想到了这个问题,故分析之。
    回车符的ascii码,ASCII码13 ‘ ’
    换行符的ascii码。ASCII码10 ‘ ’
    符号 ASCII码 意义
    10 换行NL
    13 回车CR

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


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

    那时,存储器非常贵,一些科学家觉得在每行结尾加两个字符太浪费了。加一个就能够。于是,就出现了分歧。
    /======================================/
    : UNIX 系统行末结束符
    : window 系统行末结束符
    : MAC OS 系统行末结束符
    /======================================/
    以下做几个实验。


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

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


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

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

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

  • 相关阅读:
    【深度学习】吴恩达网易公开课练习(class1 week2)
    【深度学习】吴恩达网易公开课练习(class1 week3)
    【python】内存调试
    【python】threadpool的内存占用问题
    Druid: A Real-time Analytical Data Store
    Mesa: GeoReplicated, Near RealTime, Scalable Data Warehousing
    Presto: SQL on Everything
    The Snowflake Elastic Data Warehouse
    Guava 库
    Java Annotation
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7305074.html
Copyright © 2011-2022 走看看