[C/C++/Objective-C]代码

01#include <stdio.h>
02#define PAGELEN 24
03#define LINELEN 512
04void do_more(FILE *);
05int see_more();
06int 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}
23void 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}
44int 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}