您的位置:首页 > 运维架构 > Linux

Linux系统编程之more命令

2017-02-07 14:42 281 查看

命令基础用法

linux more 基本应用 more 文件名

基本思路

伪代码
show 24 line form input
printf[more?]message
input Enter,space,or q;
if Enter,advance one line
if SPACE
if q---->exit

代码实现

#include <stdio.h>
#include <stdlib.h>

#define PAGELEN 24
#define LINELEN 512

void do_more(FILE *);
int see_more();

int main(int ac,char *av[])
{
FILE *fp = NULL;
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: