C程式語言(第2版) 課後練習題5 13

2021-10-19 12:17:33 字數 1750 閱讀 6162

練習5-13 編寫程式tail,將其輸入中的最後n行列印出來。預設情況下,n的值為10,但可通過乙個可選引數改變n的值,因此,命令

tail -n

將列印其輸入的最後n行。無論輸入或n的值是否合理,該程式都應該能正常執行。編寫程式時要充分利用儲存空間;輸入行的儲存方式應該同5.6節中排序程式的儲存方式一樣,而不採用固定長度的二維陣列。

#include

#include

#include

#define maxline 100

char

*lineptr[maxline]

;int

getline

(char s,

int maxlen)

;void

tail

(int n,

char

*lineptr,

int nlines)

;void

strcpy

(char

*s,char

*ct)

;char

*alloc

(int n)

;void

afree

(char

*p);

intreadlines

(char

*lineptr,

int maxline)

;int

main

(int argc,

char

*ar**)

else

tailnum =10;

}else

tailnum =10;

} nlines =

readlines

(lineptr, maxline)

;tail

(tailnum, lineptr, nlines)

;return0;

}#define allocsize 1000

static

char allocbuf[allocsize]

;static

char

*allocp = allocbuf;

char

*alloc

(int n)

else

return0;

}void

afree

(char

*p)#define maxlen 100

intgetline

(char s,

int maxlen)

;char

*alloc

(int n)

;int

readlines

(char

*lineptr,

int maxline)

return nlines;

}void

strcpy

(char

*s,char

*ct)

intgetline

(char s,

int maxlen)

void

tail

(int n,

char

*lineptr,

int nlines)

else

for(i = nlines - n; i < nlines; i++

)printf

("%s\n"

, lineptr[i]);

}

C程式語言(第2版) 課後練習題1 13

練習1 13 編寫乙個程式,列印輸入中單詞長度的直方圖。水平方向的直方圖比較容易繪製,垂直方向的直方圖則要困難些。橫向向列印輸入中單詞長度的直方圖 include define maxwordnum 100 最大單詞數 main clast cnow 橫向直方圖繪製 for i 0 i 縱向列印輸入...

C程式語言(第2版) 課後練習題1 18

練習1 18 編寫乙個程式,編寫乙個程式,刪除每個輸入行末尾的空格及製表符,並刪除完全是空格的行 include define maxlen 1000 輸入文字的最大字元量 intgetline char s,int maxlen 將當前鍵盤輸入的句子儲存到字元陣列中,並返回每次輸入句子長度 包含換...

C程式語言(第2版) 課後練習題4 10

練習4 10 另一種方法是通過getline函式讀入整個輸入行,這種情況下可以不使用getch與ungetch函式。請運用這一方法修改電腦程式。include include include include include include define number 0 define functio...