Linux中國
計算機實驗室之樹莓派:課程 8 屏幕03
屏幕03 課程基於屏幕02 課程來構建,它教你如何繪製文本,和一個操作系統命令行參數上的一個小特性。假設你已經有了課程 7:屏幕02 的操作系統代碼,我們將以它為基礎來構建。
1、字元串的理論知識
是的,我們的任務是為這個操作系統繪製文本。我們有幾個問題需要去處理,最緊急的那個可能是如何去保存文本。令人難以置信的是,文本是迄今為止在計算機上最大的缺陷之一。原本應該是簡單的數據類型卻導致了操作系統的崩潰,從而削弱其他方面的加密效果,並給使用其它字母表的用戶帶來了許多問題。儘管如此,它仍然是極其重要的數據類型,因為它將計算機和用戶很好地連接起來。文本是計算機能夠理解的非常好的結構,同時人類使用它時也有足夠的可讀性。
那麼,文本是如何保存的呢?非常簡單,我們使用一種方法,給每個字母分配一個唯一的編號,然後我們保存一系列的這種編號。看起來很容易吧。問題是,那個編號的數量是不固定的。一些文本段可能比其它的長。保存普通數字,我們有一些固有的限制,即:32 位,我們不能超過這個限制,我們要添加方法去使用該長度的數字等等。「文本」這個術語,我們經常也叫它「字元串」,我們希望能夠寫一個可用於可變長度字元串的函數,否則就需要寫很多函數!對於一般的數字來說,這不是個問題,因為只有幾種通用的數字格式(位元組、字、半位元組、雙位元組)。
可變數據類型(比如文本)要求能夠進行很複雜的處理。
因此,如何判斷字元串長度?我想顯而易見的答案是存儲字元串的長度,然後去存儲組成字元串的字元。這稱為長度前綴,因為長度位於字元串的前面。不幸的是,計算機科學家的先驅們不同意這麼做。他們認為使用一個稱為空終止符(NULL
)的特殊字元(用