Linux C编程——more命令的达成
发布时间:2021-12-13 10:50:32 所属栏目:教程 来源:互联网
导读:Linux C编程more命令的实现 #include stdio.h #include stdlib.h #include string.h #define PAGELEN 24 #define LINELEN 512 void do_more(FILE *); int see_more(FILE *); int main(int argc, char *argv[]) { FILE *fp; if (argc == 1) do_more(stdin); el
Linux C编程——more命令的实现 #include <stdio.h> #include <stdlib.h> #include <string.h> #define PAGELEN 24 #define LINELEN 512 void do_more(FILE *); int see_more(FILE *); int main(int argc, char *argv[]) { FILE *fp; if (argc == 1) do_more(stdin); else { while (--argc) { if ((fp = fopen(*++argv, "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 reply; FILE *fp_tty; fp_tty = fopen("/dev/tty", "r"); if(fp_tty == NULL) exit(1); while (fgets(line, LINELEN, fp)) { if (num_of_lines == PAGELEN) { reply = see_more(fp_tty); if(reply == 0) break; num_of_lines -= reply; } if (fputs(line, stdout) == EOF) exit(1); num_of_lines++; } } int see_more(FILE *cmd) { int c; printf(" |