coreutils5.0 unexpand.c源碼分析

coreutils5.0 unexpand.c源碼分析
這個程序沒有使用過。今天先測試一下用法。
echo "          bc           haha " | ./unexpand | cat -t
發現果然把空格轉換成tab鍵了。
而且,還有選項
unexpand -a
表示除文件行開頭的空格轉外,文件中間、末尾的空格也轉爲tab
unexpand -t 4
把連接的4個空格轉爲tab
程序還是很好玩的。但如何實現的呢?
重點分析函數unexpand(void)
大體框架是
打開一個要轉換的文件
for(;;){
  c=getc(fp);
  [1]如果是空格並且沒有達到要轉換的標準,就累計計數器
  否則 如果當前c是tab
  [3]否則 ???
  再打開一個要轉換的文件
}
我確定大概是要在[1],[3]兩處進行處理,如是加了printf語句,一測試果然是這樣。
其中,如果出現空格,就累計空格數,當連續空格達到可轉換標準時,就轉換。【3】的那段邏輯搞不明白。尤其是全部變量太多。有些頭大。
下次再來吧。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章