使用C清除类似于手册页的终端

时间:2012-12-20 10:16:04

标签: c linux man

我想阅读一个文本文件并显示它。但我需要在终端上打印它,类似于手册页(linux)。也就是说,当向上滚动时,它不应超出第一行,向下滚动不应超出最后一行。我必须只用C编程。我不应该使用任何工具。我目前仅清理终端的编码是,

#include<stdio.h>

main()
{
printf("\033[2J");
printf("\033[0;0f");
FILE *ffp;
char c;

ffp=fopen("help.txt","r");
while((c=getc(ffp))!=EOF)
    printf("%c",c);
}

请指导我。提前谢谢。

更新:

main()
{
FILE *ffp;
char c;


ffp=fopen("help.txt","r");

FILE *less = popen("less", "w");
while ((c = getc(ffp)) != EOF) {
  fputc(c, less);
}
}

2 个答案:

答案 0 :(得分:1)

尝试这样的事情,

#include <stdio.h>

int
main ()
{
    fputs("output1\n",stdout);
    fputs("output2\n",stdout);
    fputs("\033[A\033[2K\033[A\033[2K",stdout);
    rewind(stdout);
    ftruncate(1,0); /* you probably want this as well */
    fputs("output3\n",stdout);
    fputs("output4\n",stdout);
    return 0;
}

<强>来源: Clearing output of a terminal program Linux C/C++

答案 1 :(得分:1)

FILE *less = popen("less", "w");
while ((c = getc(ffp)) != EOF) {
  fputc(c, less);
}

moreless是实现滚动浏览文件或管道一次屏幕的程序。