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】的那段逻辑搞不明白。尤其是全部变量太多。有些头大。
下次再来吧。
 

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