翻页功能的实现

类别:编程语言 点击:0 评论:0 推荐:

 

在UNIX环境下,当我们遇到大数据量的输出时,一般会添加这样一个功能——按任意键继续……。这一功能的实现是不是像下面这段代码那么简单呢?

#include<stdio.h>

main()

{

       printf(“按任意键继续……\n”);

       getchar();

       printf(“按任意键继续……\n”);

       getchar();

}

调试一下,你会发现,每次输入必须键入回车后才能生效,于是我们的 “按任意键继续……”就不如改成“按ENTER键继续……”更名副其实了。但是处于负责的态度,我们还是应该考虑如何实现“按任意键继续……”。这里涉及到对输入终端的设置问题,下面这段简单代码将会告诉我们具体实现步骤:

#include<sys/ioctl.h>

#include<stdio.h>

 

main(argc, argv)

int argc;

char **argv;

{

        struct sgttyb sgo,sgn;

        struct tchars tco,tcn;

/*获取当前模式和设置*/

        ioctl(0, TIOCGETP, &sgo);

        ioctl(0, TIOCGETC, &tco);

 

        sgn = sgo;

        sgn.sg_flags&=~ECHO;/*关闭ECHO*/

        sgn.sg_flags |= CBREAK;/*打开CBREAK*/

 

        tcn = tco;

        tcn.t_intrc = -1;/*使中断键失效*/

/*保存新的模式和设置*/

 

        ioctl(0, TIOCSETP, &sgn);

        ioctl(0, TIOCSETC, &tcn);

/*添加“按任意键继续……”功能*/

       printf(“按任意键继续……\n”);

       getchar();

       printf(“按任意键继续……\n”);

       getchar();

 

/*重置旧的模式和设置*/

        ioctl(0, TIOCSETP, &sgo);

        ioctl(0, TIOCSETC, &tco);

        exit(0);

}

好了现在我们的“按任意键继续……”可以放心运行了。

以上代码在UNIX AIX 4.3.0下调试通过。

本文地址:http://com.8s8s.com/it/it29003.htm