[C/C++/Objective-C]代码
01 | #include <stdio.h> |
02 | #define PAGELEN 24 |
03 | #define LINELEN 512 |
04 | void do_more(FILE *); |
05 | int see_more(); |
06 | int main(int ac,char **av[]) |
07 | { |
08 | FILE * fp; |
09 | if(ac == 1 ) |
10 | do_more(stdin); |
11 | else |
12 | while(--ac) |
13 | if((fp = fopen(* ++av,"r")) != NULL) |
14 | { |
15 | do_more(fp); |
16 | fclose(fp); |
17 | } |
18 | else |
19 | exit(1); |
20 | return 0; |
21 |
22 | } |
23 | void do_more(FILE *fp) |
24 | { |
25 | char line[LINELEN]; |
26 | int num_of_lines = 0; |
27 | int see_more(),reply; |
28 | while(fgets(line,LINELEN,fp)) |
29 | { |
30 | if(num_of_lines == PAGELEN) |
31 | { |
32 | reply = see_more(); |
33 | if(reply == 0) |
34 | break; |
35 | num_of_lines -= reply; |
36 | } |
37 | if(fputs(line,stdout) == EOF) |
38 | exit(1); |
39 | num_of_lines++; |
40 |
41 | } |
42 |
43 | } |
44 | int see_more() |
45 | { |
46 | int c; |
47 | printf("\033[7m more?\033[m"); |
48 | while((c = getchar()) != EOF) |
49 | { |
50 | if(c == 'q') |
51 | return 0; |
52 | if(c == ' ') |
53 | return PAGELEN; |
54 | if(c == '\n') |
55 | return 1; |
56 |
57 | } |
58 | return 0; |
59 | } |
转载于:https://blog.51cto.com/tyl00/1178040