用户界面-屏幕和键盘(五)

2025-11-11 03:16:12

 17.12怎样按科学记数法打印数字?   


为了按科学记数法打印数字,必须在printf()函数中使用\"%e\"格式说明符,例如:    float f=123456.78;   
printf(\"%e is in scientific\\n\",(float)i);   
当然,如果要对整数进行这样的处理,则必须先把它转换为浮点数:    int i=10000;    printf(\"%e is in
scientific\\n\",f);    下面的程序演示了格式说明符“%e”的作用:#inclued <stdio.
h>main ( ){    double f = 1.0 / 1000000. O;    int i ;   
for(i = O; i< 14; ++ i )  {     printf( \" %f = %e\\n\" , f , f
);     f *= 10.0;  }  return( 0 );}

   17.13  什么是ANSI驱动程序?   


每种计算机都有自己的处理屏幕的方法。这是非常必要的,如果完全局限于一种特定的标准,那么各项事业将会停滞不前。然而,当你试图为不同的计算机编写程序时,或者试图编写必须通过电话线进行通信的程序时,这种差别会带来很大的问题。为了解决这个问题,便产生了ANSI标准。   
ANSI标准试图为程序使用视频终端来完成某些标准任务而设定一个基本框架,例如以不同颜色打印文本,移动光标,清屏,等等。它通过定义一些特殊的字符序列来达到这个目的——当这些字符序列被送到屏幕上时,它们会以特殊的方式对屏幕起作用。   
然而,在有些计算机上,当你按正常的方式把这些字符序列送到屏幕上时,你所看到的将是这些字符本身,而不是它们要产生的效果。为了解决这个问题,你需要装入一个程序,通过它来检查送往屏幕的每一个字符,并删去其中的特殊字符(这样它们就不会被打印出来),然后实现这些特殊字符所指示的功能。   
在以MS-DOS为操作系统的计算机上,这个程序被称为ANSI.SYS。ANSI.SYS必须在计算机启动时被装入,为此你可以在CONFIG.SYS文件中加入下述语句:   
DRIVER=ANSI.SYS    在实际情况中,ANSI.SYS驱动程序可能在别的目录下,这时你必须清楚地写出路径全名,例如:   
driver=c:    17.14 
怎样通过ANSI驱动程序来清屏?    这种操作可以通过\"<esc>[2J”来完成,下面的程序演示了这一点:# include
<stdio. h>main ( ){      printf( \" %c[2JNice to have an empty
screen." , 27 ) ;      return ( 0 );

    17.15  怎样通过ANSI驱动程序来存储光标位置?   


这种操作可以通过\"<esc>[s\"来完成,下面的程序演示了这一点:    #include<stdio.h>   
main()    {        printf( \"Cursor position is %c[s  " , 27
);        printf ( \"Interrupted !" ) ;       
printf( \"%c[uSAVED! !\\n\" , 27 );

   return( 0 );    }

    17.16  怎样通过ANSI驱动程序来恢复光标位置?   


这种操作可以通过“<esc>[u”来完成,请参见17.15中的例子。

    17.17  怎样通过ANSI驱动程序来改变屏幕颜色?   


完成这项任务的方法是先改变当前文本的背景色,然后清屏。下面的程序就是一个例子:    # include <stdio. h>   
int main ( )    {        printf( \" %0c[43;32m%c[2JOhh, pretty
colors!\\n\", 27 , 27 ) ;        return( 0 );    }

    17.18  怎样通过ANSI驱动程序来写带有颜色的文本?   


文本的颜色是可以改变的文本属性之一。文本的属性可以通过“(esc>[<attr>m”来改变。在ANSI字符序列中,文本的属性是用数字来表示的。你可以用一条命令来设置多种属性,各种属性之间用分号分隔开,例如“<esc>[<attr>;<attr>m\"。下面的程序演示了这一点:   
# include <stdio. h>    main ( )    {         
printf(\"%c[32;44mPsychedelic, man.\\n\" , 27 );        return( 0 );   
}    以下列出了ANSI驱动程序所支持的属性,你的显示器可能不支持其中的某些选项:        1—High
Intensity(高强度)        2一Low Intensity(低强度)       
3一Italic(斜体)        4一Underline(下划线)        5一Blinking(闪烁)       
6一Fast Blingking(快闪)        7一Reverse(反转)        8一Invisible(不可见)   
前景色:        30一Black(黑)        31一Red(红)       
32一Green(绿)        33一Yellow(黄)        34一Blue(蓝)       
35一Magenta(洋红)        36一Cyan(青蓝)        37一White(白)   
背景色:        40—Black(黑)        41一Red(红)       
42一Green(绿)        43一Yellow(黄)        44一Blue(蓝)       
45一Magenta(洋红)        46一Cyan(青蓝)        47一White(白)

    17.19怎样通过ANSI驱动程序来移动光标?   


移动光标有两种方式:相对移动和绝对移动。相对移动是指相对于当前光标位置的移动,例如“将光标上移两格”。绝对移动是指相对于屏幕左上角的移动,例如“将光标移到第10行第5列”。   
相对移动可按以下方式进行:    “<esc>[#a”,其中#表示上移的格数   
“<esc>[#b”,其中#表示下移的格数    “<esc>[#c”,其中#表示右移的格数   
“<esc>[#d”,其中#表示左移的格数    将光标移到绝对位置的方法是:   
“<esc>[<row>;<col>H”,其中row和col分别表示目标位置所在的行数和列数。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢