翻页功能的实现

王朝other·作者佚名  2006-01-08
宽屏版  字体: |||超大  

在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下调试通过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有