《C++语言入门经典》一2.3 数据的输入与输出

    xiaoxiao2021-07-15  174

    2.3 数据的输入与输出

    在用户与计算机交互的过程中,数据输入和数据输出是必不可少的操作过程,计算机需要通过输入获取来自用户的操作指令,并通过输出来显示操作结果。本节将介绍数据输入与输出的相关内容。

    2.3.1 格式输出函数

    C++语言中保留了C语言中的屏幕输出函数printf。使用printf可以将任意数量和类型的数据输出到屏幕。printf函数的作用是向终端(输出设备)输出若干任意类型的数据。printf函数的一般格式为:printf(格式控制,输出列表) 括号内包括格式控制和输出列表两部分。 

    (1)格式控制格式控制是用双引号引起来的字符串,也称为转换控制字符串。其中包括两种字符,一种是格式字符,另一种是普通字符。格式字符用来进行格式说明,其作用是将输出的数据转化为指定的格式输出。格式字符以“%”字符开头。普通字符是需要原样输出的字符,其中包括双引号内的逗号、空格和换行符。(2)输出列表输出列表中列出的是要输出的一些数据,也可以是变量或表达式。例如,要输出一个整型变量时,可以用下面的语句:

    int iInt=10; printf("this is %d",iInt);

    执行上面的语句显示出来的字符是“this is 10”。在格式控制双引号中的字符是“this is %d”,其中的“this is”字符串是普通字符,而“%d”是格式字符,表示输出的是后面iInt 的数据。由于printf是函数,“格式控制”和“输出列表”都是函数的参数,因此printf函数的一般形式也可以表示为:printf(参数1,参数2,…,参数n) 函数中的每一个参数按照给定的格式和顺序依次输出。例如,显示一个字符型变量和整型变量的语句如下:

    printf("the Int is %d,the Char is %c",iInt,cChar);

    表2.4中列出了有关printf函数的格式字符及其功能说明。

    【例2.2】 使用格式输出函数printf。在本实例中,使用printf函数对不同类型变量进行输出,对使用printf函数所用到的输出格式进行分析。 

    实例位置:光盘MR源码第2章2.2

    #include "stdafx.h" int main() {  int iInt=10; /*定义整型变量*/  char cChar='A'; /*定义字符型变量*/  float fFloat=12.34f; /*定义单精度浮点型*/  printf("the int is: %d\n",iInt); /*使用printf函数输出整型*/  printf("the char is: %c\n",cChar); /*输出字符型*/  printf("the float is: %f\n",fFloat); /*输出浮点型*/  printf("the stirng is: %s\n","I LOVE YOU"); /*输出字符串*/  return 0; }

    上述程序中,定义了一个整型变量iInt,并在printf函数中使用格式字符%d进行输出;为字符型变量cChar赋值为'A',在printf函数中使用格式字符%c输出字符。格式字符%f用来输出实型变量的数值。在最后一个printf输出函数中,使用%s将一个字符串输出,字符串内容不包括双引号。

    另外,在格式说明中,在%符号和上述格式字符间可以插入几种附加格式说明字符,如表2.5所示。

    说明1)在使用printf 函数时,除X、E、G外,其他格式字符必须用小写字母,如%d 不能写成%D 。2)如果想输出“%”符号,则需要在格式控制处使用“%%”进行输出。

    【例2.3】 在printf函数中使用附加符号。在本实例中,使用printf 函数的附加格式说明字符,对输出的数据进行更为精确的格式设计。实例位置:光盘MR源码第2章2.3

    #include "stdafx.h" int main() {  long iLong=100000; /*定义长整型变量,为其赋值*/  printf("the Long is %ld\n",iLong); /*输出长整型变量*/  printf("the string is: %s\n","LOVE"); /*输出字符串*/  printf("the string is: s\n","LOVE"); /*使用m控制输出列*/  printf("the string is: %-10s\n","LOVE"); /*使用-表示向左靠拢*/  printf("the string is: .3s\n","LOVE"); /*使用n表示取字符数*/  printf("the string is: %-10.3s\n","LOVE");  return 0; }

    1)在程序代码中,在使用printf 函数对定义的长整型变量进行输出时,应该在%d 格式字符中添加l字符,继而输出长整型变量。2)%s 用来输出一个字符串的格式字符,在结果中可以看到输出了字符串“LOVE”。3)s 为格式%ms,表示输出字符串占m列,如果字符串本身长度大于m,则突破m 的限制,将字符串全部输出;若字符串小于m,则用空格进行左补齐。可以看到在字符串“LOVE”前后存在6个空格。4)%-10s 格式为%-ms,表示如果字符串长度小于m,则在m列范围内,字符串向左靠,右补空格。5).3s 格式为%m.ns,表示输出占m列,但只取字符串左端n个字符。这n个字符输出在m列的右侧,左补空格。6)%-10.3s 格式为%-m.ns,其中m、n含义同上,n个字符输出在m列范围内的左侧,右补空格。如果n>m,则m自动取n值,即保证n个字符正常输出。程序运行结果如图2.3所示。

    2.3.2 格式输入函数

    与格式输出函数printf相对应的是格式输入函数scanf。该函数的功能是指定固定的格式,

     并且按照指定的格式接收用户在键盘上输入的数据,最后将数据存储在指定的变量中。scanf函数的一般格式为:scanf(格式控制,地址列表) 从scanf 函数的一般格式可以看出,参数位置中的格式控制与printf 函数的相同。例如,%d 表示十进制的整型,%c表示单字符。而在地址列表中,此处应该给出用来接收数据变量的地址。例如,得到一个整型数据的操作如下:scanf("%d",&iInt); /得到一个整型数据/ 在上面的代码中,&符号表示取iInt变量的地址,因此不用关心变量的地址具体是多少,只要在代码中变量的标识符前加&符号,就表示取变量的地址。说明编写程序时,在scanf函数的参数地址列表处,一定要使用变量的地址,而不是变量的标识符,否则编译器会提示出错。表2.6中列出了scanf函数中使用的格式字符及其功能说明。说明格式字符%s 用来输入字符串。将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志“0”作为最后一个字符。【例2.4】 使用scanf格式输入函数得到用户输入的数据。在本实例中,利用scanf函数得到用户输入的两个整型数据,因为scanf函数只能用于输入操作,所以若要在屏幕上显示信息,则需要使用显示函数。实例位置:光盘MR源码第2章2.4

    #include "stdafx.h" int main() {  int iInt1,iInt2; /*定义两个整型变量*/  puts("Please enter two numbers:"); /*通过puts函数输出提示信息的字符串*/  scanf("%d%d",&iInt1,&iInt2); /*通过scanf函数得到输入的数据*/  printf("The first is : %d\n",iInt1); /*显示第一个输入的数据*/  printf("The second is : %d\n",iInt2); /*显示第二个输入的数据*/  return 0; }

    1)为了能接收用户输入的整型数据,在程序代码中定义了两个整型变量iInt1和iInt2。2)因为scanf函数只能接收用户输入的数据,而不能显示信息,所以先使用puts函数输出一段字符表示信息提示。puts函数在输出字符串之后会自动进行换行,这样就可以省去使用换行符的麻烦。3)调用scanf 格式输入函数,在函数参数中可以看到,在格式控制的位置使用双引号将格式字符包括,%d 表示输入的为十进制的整数。在参数中的地址列表位置,使用&符号表示变量的地址。4)此时变量iInt1 和iInt2 已经得到了用户输入的数据,调用printf 函数将变量进行输出,这里要注意区分的是printf函数使用的是变量的标识符,而不是变量的地址。scanf函数使用的是变量的地址,而不是变量的标识符。说明程序是怎样将输入的内容分别保存到指定的两个变量中的呢?原来,scanf函数使用空白字符分隔输入的数据,这些空白字符包括空格符、换行符、制表符(Tab )。如在本程序中,使用换行符作为空白字符。

    在printf函数中,除了格式字符外,还有附加格式用于更为具体的说明,相应地,scanf函数中也有附加格式说明字符用于更为具体的格式说明,如表2.7所示。

    【例2.5】 使用附加格式说明scanf函数的格式输入。在本实例中,将所有scanf附加格式都进行格式输入的说明,通过这些指定格式的输入,对比输入前后的结果,观察其附加格式的效果。实例位置:光盘MR源码第2章2.5

    #include "stdafx.h" int main() { 相关资源:C语言入门经典(第4版)--详细书签版

    最新回复(0)