学习《Unix/Linux编程实践教程》,第一节就讲到了用C语言实现简单的more命令。它可以接受命令行参数(如果没有则使用标准输入stdin)。然后显示文件内容。
大致流程如下:
1.首先调用fopen() 函数打开文件。
2.然后是调用自己写的函数 do_more() ,使用fgets() 与 fputs() 一行一行进行读入和输出。
3.首先输出整个屏幕的文件(假设一个屏幕24行),如果文件超过24行,那么接着调用see_more(), 根据用户输入,选择输出一行,一页,或者退出。输出之后接着给用户选择。依次循环,直到出错或者文件读完。
4.最后关闭文件。
///more01.c
#include
#include
#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[