⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 more02.c

📁 linux下实现more指令的程序 可以运行
💻 C
字号:
/*  more02.c  - version 0.2 of more *	read and print 24 lines then pause for a few special commands *      feature of version 0.2: reads from /dev/tty for commands */#include	<stdio.h>#define	PAGELEN	24#define	LINELEN	512void do_more(FILE *);int see_more(FILE *);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 )/* *  read PAGELEN lines, then call see_more() for further instructions */{	char	line[LINELEN];	int	num_of_lines = 0;	int	see_more(FILE *), reply;	FILE	*fp_tty;	fp_tty = fopen( "/dev/tty", "r" );	   /* NEW: cmd stream   */	if ( fp_tty == NULL )			   /* if open fails     */		exit(1);                           /* no use in running */	while ( fgets( line, LINELEN, fp ) ){		/* more input	*/		if ( num_of_lines == PAGELEN ) {	/* full screen?	*/			reply = see_more(fp_tty);  /* NEW: pass FILE *  */			if ( reply == 0 )		/*    n: done   */				break;			num_of_lines -= reply;		/* reset count	*/		}		if ( fputs( line, stdout )  == EOF )	/* show line	*/			exit(1);			/* or die	*/		num_of_lines++;				/* count it	*/	}}int see_more(FILE *cmd)				   /* NEW: accepts arg  *//* *	print message, wait for response, return # of lines to advance *	q means no, space means yes, CR means one line */{	int	c;	printf("\033[7m more? \033[m");		/* reverse on a vt100	*/	while( (c=getc(cmd)) != EOF )		/* NEW: reads from tty  */	{		if ( c == 'q' )			/* q -> N		*/			return 0;		if ( c == ' ' )			/* ' ' => next page	*/			return PAGELEN;		/* how many to show	*/		if ( c == '\n' )		/* Enter key => 1 line	*/			return 1;			}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -