达内推荐:用户界面-屏幕和键盘(四)

操作方法

  • 01

    17.9  怎样防止用户向一个内存区域中输人过多的字符? 有两个原因要防止用户向一个内存区域中输入过多的字符:第一,你可能只希望处理固定数目的字符;第二,可能也是更重要的原因,如果用户输入的字符数超过了缓冲区的容量,就会溢出缓冲区并且破坏相邻的内存数据。这种潜在的危险在C指南书籍中常常会被忽略。例如,对于下面的这段代码,如果用户输入的字符超过了50个,那将是很危险的: char bufE50];  scanf(\"%s\",buf); 解决这个问题的办法是在scanf()中指定要读入的字符串的最大长度,即在“%”和“s”之间插入一个数字,例如: \"%50s\"这样,scanf()将最多从用户那里接受50个字符,任何多余的字符都将保留在输入缓冲区中,并且可以被其它的scanf()所获取。 还有一点需要注意,即字符串需要有一个NUL终止符。因此,如果要从用户那里接受50个字符,那么字符串的长度必须是51,即50个字符供真正的字符串数据使用,还有一个字节供NUL终止符使用。 下面的程序测试了这种方法:# include <stdio. h>/*      Program to show how to stop the      user from typing too many characters in      a field.*/int main(){      char str[50]; /* This is larger than you really need * /    /*       Now, accept only TEN characters from the user. You can test          this by typing more than ten characters here and seeing          what is printed.     */      scanf( \"%10s\", str);     /*          Print the string, verifying that it is, at most, ten characters.     */       printf( \"The output is : %s.\\n\", str) ;       return (0) ; 下面是这个程序的一个运行例子。当输入  supercalifragilisticexpialidocious后,程序将输出 supercalif. 17.10  怎样用0补齐一个数字? 要想用0补齐一个数字,可以在格式说明符中的“%”后面插入一个以0开始的数字。可以用具体的例子来清楚地解释这一点:    /*Print a five-character integer,padded with zeros.*/    printf(\"%05d\",i);/ * Print a floating point, padded left of the zero out to    seven characters. * /printf(\"% 07f\", f);如果你没有在数字前面加上O这个前缀,那么数字将被用空格而不是O来补齐。下面的程序演示了这种技巧:#include <stdio. h>int main (){     int i = 123;     printf( \"%d\\n\", i ) ;     printf( \" %05d\\n\", i );     printf( \"%07d\\n\", i );     return( 0 );}  它的输出结果为:  123  00123 OO00123 17.11  怎样才能打印出美元一美分值? C语言并没有提供打印美元一美分值的现成功能。然而,这并不是一个难题,编写一个输出货币值的函数是非常容易的。当你编写了一个这样的函数后,你就可以在任何需要它的程序中调用它了。 这样的函数往往既短小又简单,下文中将简单地描述它的工作方式。在本书中,这个函数被分解成几个较小的容易编写的程序段,因而很容易理解。把一个程序分解为较小的程序段的原因在第11章中已经介绍过了。 这个函数需要使用一些标准C函数,因此你需要包含一些相应的头文件。在任何使用这个函数的程序的开头,你都应该确保包含以下这些头文件:#tinclude <stdio. h>#include <stdlib. h># include <math. h># include <string. h> 包含了所需的头文件后,你就可以创建一个接受美元值并按带逗号的形式打印该值的函数:   void PrintDollars( double Dollars ){    char buf[20];    int  l , a;   sprintf( buf, \" %olf\", Dollars );   l = strchr( buf, \'.\') - buf;   for(a= (Dollars<0.0); a<1; ++a)        printf( \"%c\", buf[a]) ;        if(( ( ( l - a ) % 3) == 1 )&&(a !=l - 1 ) )            printf( \" ,\" ) ; } 你可能习惯于用浮点数来表示实数,这是很平常的。然而,浮点数通常不适合于金融工作,因为它有较大程度的不准确性,例如舍入错误。双精度类型的准确度比浮点数高得多,因此它更适合于真正的数字工作。 只要写一个把整数值传递给该函数的程序,你就可以很方便地测试该函数。然而,该函数还不能打印小数或“零头”,为此,还要专门编写一个完成这项工作的函数:void PrintCents ( double Cents){   char buf[10 ];   sprintf( buf, \"%-. 02f\" , Cents );   printf(\"%s\\n\" , bur + 1 + (Cents <= 0) ); 上述函数接受一个小数值并按正确的格式打印该值。同样,只要编写一个把小数值传递给该函数的程序,你就可以测试该函数了。 现在你已经有了两个函数:一个能打印货币值的美元部分(整数部分),另一个能打印货币值的美分部分(小数部分)。你当然不希望先把一个数分解成两部分,然后再分别调用这两个函数!但是,你可以编写一个函数,用它来接受货币值并把该值分解成美元和美分两部分,然后再调用已有的另外两个函数。这个函数如下所示:void DollarsAndCents ( double Amount ){     double Dollars = Amount >= 0.0 ? floor( Amount ) : ceil(Amount) ;     double Cents = Amount - (double) Dollars;     if ( Dollars < 0.0 ) printf( \"-\"  );     printf( \" $\" );     PrintDollars ( Dollars ) ;     PrintCents ( Cents ) ;}    这就是所要的函数! DollarsAndCents()函数接受一个实数值(double类型),并按美元一美分的格式把该值打印到屏幕上。如果你要测试一下这个函数,你可以编写一个main()函数,让它去打印多个美元一美分值。下面就是这样的一个函数: int main()  {    double num= . 0123456789;    int a ;    for(a = 0; a<12; ++a )    {        DollarsAndCents( num );        num *= 10.0;    }     return( 0 );}  它的输出结果为:    $O.01 $O.12    $1.23    $12.35    $123.46    $1,234.57 $12,345.68    $123,456.79    $1,234,567.89    $12,345,678.90 $123,456,789.OO    $1,234,567,890.OO 如果你想按其它的形式打印货币值,你可以很方便地修改这个程序,使其按其它格式打印数字。 以上就是今天我们要为大家分享的有关用户界面-屏幕和键盘(四)的内容,相信能够帮助到大家。

(0)

相关推荐

  • 电脑屏幕软键盘怎么开启

    有的小伙伴在使用电脑时,发现电脑键盘坏了,因此想要开启电脑屏幕软键盘,但是却不知道如何进行开启,那么小编就来为大家介绍一下吧.具体如下:1. 第一步,点击页面左下角的开始选项.2. 第二步,在弹出选项 ...

  • Windows放大镜、屏幕和键盘

    操作方法 01 Windows放大镜.屏幕和键盘 放大镜是针对那些有轻度视觉障碍的用户而设计的,使用放大镜可以使这些用户更容易地阅读屏幕上的内容,下面就来介绍如何使用放大镜. 使用放大镜的具体操作如下 ...

  • 禁用 Windows 8屏幕触摸键盘的方法

    这是Windows8的屏幕键盘,它很可爱,不是吗。除非我不需要它或不想看到它。我有一台Lenovo X1 Carbon Touch,并且它已经有一个键盘。我从来都没想要用Windows8触摸键盘。不幸 ...

  • Windows10系统下怎么打开屏幕触摸键盘[图文]

    屏幕触摸键盘是我们平时可能会用到的一种输入方式,当外接键盘突然坏了或者不想打字的话,就可以通过开启屏幕触摸键盘进行操作,触摸键盘同样支持鼠标操控,那么在windows10系统下如何打开屏幕触摸键盘呢? ...

  • win7屏幕软键盘怎么打开

    方法一:我们可以在开始菜单的搜索栏中输入osk打开屏幕软键盘. 方法二:也可以打开开始菜单,找到轻松访问的文件夹来打开屏幕软键盘.

  • win10屏幕虚拟键盘怎么设置26键布局九宫格布局?

    win10屏幕虚拟键盘怎么设置26键布局九宫格布局?win10系统中有虚拟键盘,这个键盘可以设置成26键或者九宫格布局的键盘,该怎么设置呢?下面我们就来看看详细的教程,需要的朋友可以参考下. 1.下载 ...

  • 怎么开启Win10系统的屏幕虚拟键盘

    如果我们的win10电脑的键盘出现问题了,我们就会选择开启屏幕的虚拟键盘来应急,今天就跟大家介绍一下怎么开启Win10系统的屏幕虚拟键盘的具体操作步骤.1. 打开电脑后,选择左下角的"开始& ...

  • 如何设置Word在一个屏幕中显示四页

    Word是现在十分常用的办公软件,有些新用户不知道如何设置Word在一个屏幕中显示四页,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步先打开电脑中的Word文档,接着根据下图箭头 ...

  • 笔记本电脑屏幕有键盘印怎么去除(电脑屏幕有键盘的印记,怎么办)

    这是一个老生常谈的问题,而且在可预见的若干年内,笔记本的键盘恐怕很难避免在笔记本关合后,不在屏幕上留下一格一格键帽的印迹.究其原因倒是一目了然,如果你正好用着笔记本查看本页面,不妨低头看看你的笔记本键 ...