編寫nios shell時想到的問題 回車vs換行

2022-09-16 07:39:09 字數 2578 閱讀 8147

在編寫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

ee 『r』的測試

** cout<

結果 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檢測不到一行結束標誌,就連續顯示

處理Assetbundle依賴關係時想到的一道題

在處理unit3d的assetbundle依賴關係的時候,想到了一道有趣的題目 給定一堆資料,例如,b c d e 先判斷依賴關係,例如a包含b,e包含b,e包含c,然後分組,能包含的可以分為同一組,例如a b d,e c 求分組的方案以及最優的方案?這道題的答案其實很簡單,分組方案有兩種 這道題裡...

app編寫時注意的問題

1.判斷是否處於登入狀態,可通過判斷本機記憶體中的登入標誌完成。2.某些ajax訪問,可放在單獨的js檔案中。二 登入 index頁面判斷登入,如沒登入,採用mui.preload載入登入頁面。var webview mui.preload login頁面按下登入鍵後,要對登入名和密碼是否為空進行檢...

編寫介面時的coding思路

總結相信每位程式設計師都有自己的編碼習慣,我也不例外,今天就是隨筆暢談下我平時寫 的習慣 不喜勿噴 哈哈 這裡主要按照寫乙個method的思路進行展開 例子 string methodname gettheorderdetailbyorderid 例子 logger.info order.class...