練習(xí)5-11

這習(xí)題TM一個比一個長.
這個雖然挺長但是還是比較簡單的
捋就從頭捋,在main里按順序看.
剛開始的argc參數(shù)數(shù)量,*argv[]參數(shù)列表(第一個元素是程序名).
然后是數(shù)組tab,這個就相當(dāng)于一個對照表.
settab函數(shù)的作用就是初始化這個對照表.
先看settab的代碼,
先判斷argc是否大于1,如果不是則證明參數(shù)只有程序名一個.不帶參數(shù).所以制表符終止位是默認(rèn)的8.
然后就是將這個對照表初始化.
之后就是帶參數(shù)的情況.
先將對照表初始化成全是NO
然后讀取參數(shù),判斷參數(shù)并將符合條件的(參數(shù)大于0,并且小于最大行數(shù))位置更改.
tabpos函數(shù)的功能就是跟對照表對照.返回值就是當(dāng)前位置與對照表中對比的結(jié)果.
entab函數(shù)就是具體操作了.
首先判斷輸入是否是空白符
如果是則進(jìn)行下列操作..
如果輸入時空格,對比看是否在制表符終止位,
如果不是將記錄空格的nb變量自增.
如果是將記錄空格的變量nb清零,然后將記錄制表符的nt自增.
之后就是遇到非空白符的情況.
先把之前積攢的制表符打印出來.
然后判斷當(dāng)前輸入是否是制表符.
是的話就將記錄空格符的nb清零.
不是制表符的話就將積攢的空格符打印出來.
然后打印當(dāng)前輸入的字符.
遇到換行符,將記錄當(dāng)前位置的pos清零初始化.到每行最開始.
否則遇到制表符,對對照表進(jìn)行對比,將pos加到制表符的位置.

下面是另一個解法
這種方法比前一種簡潔一點(diǎn).
settab還是對對照表進(jìn)行初始化.
detab函數(shù).
這里是多路判定.
首先判斷輸入的字符c是否是制表符.
是制表符的話打印到制表符終止位,
判斷條件是tabpos函數(shù)中的tab數(shù)組是否到了yes.
否則判斷是否是換行符,
是的話輸出這個換行符,
然后將pos初始化成1.
都不是的話就輸出這個字符,然后自增pos.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,564評論 0 13
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,251評論 0 38
  • 前幾天參加了父母導(dǎo)師班學(xué)習(xí),有些人向我打聽學(xué)習(xí)了什么內(nèi)容,我第一反應(yīng)是:院長什么具體的東西都沒有,但是我莫名...
    柔汐之光閱讀 404評論 0 1
  • 羅胖說人生算法中的一個詞深深的吸引了我。這個詞在我之前的項目管理聽過,也用過。 人生需要不斷的迭代,找準(zhǔn)算法不斷努...
    將軍府上閱讀 185評論 0 3
  • 銷售小白如果考慮做房地產(chǎn)銷售,作為一個從事房地產(chǎn)5年,年收入輕松達(dá)到50萬+的地產(chǎn)銷售總監(jiān)的經(jīng)驗之談,特總結(jié)三步進(jìn)...
    楊星河閱讀 1,330評論 0 0

友情鏈接更多精彩內(nèi)容