在 Unix 操作系統中有一條命令,命令的功能是打印文本文件的最後 n 行。命令格式爲:
tail [-n] filename
其中,tail 爲命令名;參數 filename 爲文本文件名;參數 [-n] 表示要打印的行數,該參數是可選的,缺省值爲 10,即無此參數時,表示打印文件的最後 10 行。例如:命令
tail -20 ecample.txt
表示打印文本文件 example.txt 的最後 20 行。如果被打印的文本文件中行數少於 n 行或者少於 10 行,該命令將打印文件中的所有行。
請用帶參數的 main 函數實現該程序。該程序應該具有一定的錯誤處理能力,例如,能夠處理非法命令參數和非法文件名。程序中可以使用以下 C 庫函數:
- int atoi(char *s) - 將數字串轉爲相應整數
- fgets(char *s, int n, FILE *fp) - 從文件中讀入一行
- void *malloc(unsigned size), fee - 申請和釋放內存
- strlen - 計算字符串的長度
- strcpy - 將一個字符串拷貝到另一個字符串中
除此之外,不允許使用其他庫函數。
提示:
- 可以在命令行參數正確性分析過程中獲取被打印的文本文件名稱以及需要打印的行數等信息
- 如果命令行分析正確,可以建立一個不帶頭結點的單向循環鏈表存放從文件中讀到的內容