返回顶部

收藏

linux 下 more 命令 的c++实现

更多

linux 下 more 命令 的c++实现

#include <stdio.h>
#define PAGELEN 24
#define LINELEN 512
void do_more(FILE *);
int see_more();
int main(int ac,char **av[])
{
    FILE * fp;
    if(ac == 1 )
        do_more(stdin);
    else 
        while(--ac)
            if((fp = fopen(* ++av,"r")) != NULL)
            {
                do_more(fp);    
                fclose(fp); 
            }
            else 
                exit(1);
    return 0;

}
void do_more(FILE *fp)
{
    char line[LINELEN];
    int num_of_lines  = 0;
    int see_more(),reply;
    while(fgets(line,LINELEN,fp))
    {
        if(num_of_lines == PAGELEN)         
        {
            reply = see_more(); 
            if(reply == 0)
                break;
            num_of_lines -= reply;
        }
        if(fputs(line,stdout) == EOF)
            exit(1);
        num_of_lines++;

    }

}
int see_more()
{
    int c;
    printf("\033[7m more?\033[m");
    while((c = getchar()) != EOF)
    {
        if(c == 'q')    
            return 0;
        if(c == ' ')
            return PAGELEN;
        if(c == '\n')
            return 1;

    }
    return 0;
}

标签:cpp,more

收藏

0人收藏

支持

1

反对

0

相关聚客文章
  1. master 发表 2014-04-02 07:26:25 No more stress
  2. ifenwen 发表 2014-08-23 14:11:49 Ignore no more 不再忽略国内下载
  3. FrankWang 发表 2015-04-15 02:17:21 【转】shell more指令的一些笔记
  4. xietingwen 发表 2014-08-31 11:27:59 定义赋值运算符函数
  5. Run 发表 2014-10-01 16:01:51 从书上的一个错误说起
  6. tactoth 发表 2014-09-28 14:06:34 User experience is way more important than code qu
  7. 博主 发表 2015-10-03 08:06:43 取得一个整型变量二进制表示的最后一个「1」
  8. OWenT 发表 2016-02-19 04:44:53 libatbus基本功能及单元测试终于写完啦
  9. trend setter 发表 2016-06-09 03:52:34 Well, Daniel Radcliffe More Masculine
  10. 博主 发表 2016-11-26 08:04:31 C++ 惯用法 CRTP 简介
  11. admin 发表 2017-01-11 15:28:07 Asian Netflix challenger HOOQ raises $25M more fro
  12. 博主 发表 2017-03-21 12:17:00 Make Ubuntu look more like Mac

发表评论