飒儿 / 我的图书馆 / c语言中的输入输出

0 0

   

c语言中的输入输出

2010-05-28  飒儿
 输入字符getchar()
getchar函数是对单个字符进行输入的函数。它的功能是:从标准输入设备上(键盘)输入一个且只能是一个字符,并将该字符返回为getchar函数的值。
      格式: getchar()
例如:
      char ch;
      ch = getchar();
ch为字符型变量,上述语句接收从键盘输入的一个字符并将它赋给ch。
例1:getchar函数应用。
#include <stdio.h>
main()
{
      int i;
      i=getchar();
      printf("%c:%d\n",i,i);
}
执行本程序时,按下字符‘A’并回车后,显示结果如下:
      A:65
在使用getchar函数时,要注意以下几点:
1)getchar函数是不带参数的库函数,但是()不能省略。
2)用户输出一个字符后,只当按“回车”键之后输入的字符才有效;
3)getchar函数只接受一个字符,而非一串字符。上例中:若输入abcde,getchar函数也只接受第一个字符‘a’。
4)getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量而是作为表达式的一部分。
5)getchar函数不能够显示输入的数据,如果希望显示该数据,必须调用相应的输出函数(例如putchar()库函数)来实现。
还有一个与之相接近的函数是getch()函数。getch()函数表示当用户在键盘上输入一个字符后,该字符立即被计算机接受,可以通过输出函数显示出来,而无需等待“回车”命令。
 
 
输出字符putchar()
putchar函数是对单个字符进行输出的函数。它的功能:将指定表达式的值所对应的字符输出到标准设备(终端),每次只能输出一个字符。
      格式:putchar(输出项)
putchar()必须带输出项,输出项可以是字符型常量或变量,putchar函数功能与printf函数中的%c相当。
例2:putchar函数的应用
#include"stdio.h"
main()
{
      char o=‘O’,k=’K’;
      putchar(o);
      putchar(k);
      putchar(‘\n’);
      putchar(‘*’)
}
执行结果为:
       OK
      *
使用putchar函数时,应注意以下几点:
1)输出的数据只能是单个字符,不能是字符串。’abc’或“abc”都是错误的。
2)被输出的字符常量必须用单引号括起来,如:’\n’、’*’。不能用双引号,导致错误。
3)当输出项是表达式的时候,可以写成a+’32’等形式,不能写成a\n等形式。
另外,与putchar函数的功能和使用方法一样,putch函数也可以输出一个字符。
 
scanf函数的调用格式

scanf函数原型包含在标准输入输出头文件“stdio.h”中。调用格式:
      格式:scanf"格式控制字符串",输入项地址列表);
scanf函数有两项参数,用“”引起来的格式控制字符串和需要接收数据的内存地址。
格式控制字符串:规定数据输入的格式,由转换说明符和普通字符组成,转换说明符和百分号(%)一起使用,用来说明输入数据的数据类型(格式字符)。
输入项地址列表:需要接收数据的变量地址,这些输入项与格式控制字符串在类型和数量上要对应,当有多个输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。
在C语言中,一个变量的地址可以通过地址运算符&得到。例如:定义int a,b;则a,b的地址为&a,&b。(见指针一章)
scanf()函数中的输入项是变量地址,输入数据将被放入变量地址所指示的内存单元中,所以在变量前要加地址运算符“&”。

提示

忘记变量前加地址操作符“&”是初学时容易犯的一个错误。现阶段只要记住scanf语句中的每个变量名前面都要有&,例外的情况在以后讨论。


——摘自高克宁 雒兴刚主编《高级语言程序设计》
 
scanf函数的格式说明

格式说明字符串规定了输入项中的变量将以何种类型的数据格式(由转换说明符给出)被输入,格式控制字符串的一般形式:
      % [修饰符] 转换说明符
其中修饰符为任选项。
1)格式转换说明符:用于指定相应输入项内容的输入格式,常用格式见下表1。

表1 scanf函数转换说明符

格式

意义

d

输入一个十进制整数

o

输入一个八进制整数

x

输入一个十六进制整数

i

输入一个有符号或无符号的十进制、八进制、十六进制整数

u

输入一个无符号十进制整数

f 、e或E、 g或G

输入一个小数形式或指数形式的浮点数

c

输入一个字符

s

输入一个字符串

例如:
      int x;
      scanf(“%d”,&x);
它有两个参数“%d”和&x,第一个参数是格式控制字符串,由%后接一个类型转换说明符构成,指出用户应该输入的数据类型,转换说明符%d说明输入的数据应该是一个整数。第二个参数是变量x的地址,&与变量名连用是将变量x的内存地址告诉scanf函数,计算机然后就会将输入的数据存储在这个地址单元中。
计算机在执行scanf语句时,等待用户输入变量x的值,用户通过键入一个整数并按下回车键响应请求,计算机把用户的输入值赋给变量x,操作完成后,对x的引用就会使用这个值。scanf函数(及后面学习的printf函数)提高了用户与计算机之间的交互性。
在有多个输入项时,如果格式控制字符串中没有普通字符或转义字符作为读入数据之间的分隔符,则一般采用空格符、<Tab>符或回车键作为读入数据的分隔符,当C语言的编译系统空格符、<Tab>符或回车键以及非法字符时,会自动认为数据输入结束。计算机等待所有的数据输入结束后的最后一次<回车键>,将读入的数据分别付给对应的变量所指定的内存单元。如果数据的输入少于格式控制字符串中指定的转换说明符的个数,则计算机将一直等待数据的输入,直到所有数据全部被键入为止。
例如:
      int x,y;
      scanf(“%d%d”,&x,&y);
读入数据的方式可以是:
      1<空格>2<回车>
或者
      1<回车>
      2<回车>
或者
      1 <Tab>2<回车>
采用“%d%d”形式的格式字时,不能使用其它的数据读入方式。例如:1,2<回车>,会使得只有1被送入x单元,而y单元不能够得到数据2。
但是,在输入多个带有字符型数据时,若以空格符作为分隔符,可能产生非预期的结果。此时,空格将被作为有效字符处理。
例如:
      int a;
      char ch;
      scanf(“%d%c”,&a,&ch);
如果数据读入方式为:123<空格>a<回车>,本意是期望变量a的值为数值32,变量ch的值为字符a,但实际上用于分隔数据的空格被作为有效字符数据读入并赋予给字符变量ch。为了避免这种情况,可以在格式控制字符串中加入空格作为分隔符。将上面例句改为:scanf(“%d %c”,&a,&ch);此处的%d后的空格,就可以跳过字符‘a’前所有的空格,从而保证非空格数据的正确录入。

2)修饰符
scanf函数的修饰符有:数据读入宽度(域宽)、*和长度。修饰符和意义见下表2。

表2 修饰符以及意义

标识符

意义

域宽

指定输入数据的宽度

*

跳过相应数据不作处理

l或h

读入长整型、双精度型或短整型数据

①域宽
可以用一个十进制数指定输入数据的数据宽度,系统自动按域宽截取输入数据。
例如:
      int a;
      scanf(“%3d”,&a);
表示按宽度3输入一个整数给变量a。如果读入数据为:123456<回车>,则变量a实际接收的值为123。
例如:
      int a,b,c;
      scanf(“%2d%3d%4d”,&a,&b,&c);
如果读入数据为:123456789<回车>,则变量a、b 、c 的值分别是12、345和6789。可以实现数据的自动截取。 ②字符*
*表示按指定格式读入数据但不赋予相应的变量,作用是跳过相应的读入数据。
例如:
      int a,b,c;
      scanf(“%d%*d%d”,&a,&b,&c);
执行该语句,若输入为1? 2? 3<回车>,结果为a=1,b=3,c未赋值,2被跳过。
例1:一个实际问题——处理一个日期数据。
假设日期读入的格式为: 12-2-2003或12/02/2003,该数据格式中的年、月、日三个数据需要保存,但是连接年、月、日数据的连接符需要被废弃。
当用户以12-02-2003形式键入日期数据时,该数据中的每一个数值(年、月、日)需要被读入对应的变量year、month、date内存单元中,为了去掉不需要的将年、月、日数据分开的连接符,直接方法是将这些字符包含在scanf的格式控制串中。
例如将语句写成:scanf(“%d─%d─%d’,&date,&month,&year);这条语句可以去掉以12-2-2003形式读入数据中的连字符,但是当用户输入如下格式的日期数据::12/2/2003或12:2:2003时,该语句语句不仅不能去掉不需要的字符(/或:),还会造成数据错误(只能正确得到date数据)。如果在输入格式字符串中使用scanf函数提供的*,将语句写成:
scanf(“%d%*c%d%*c%d’,&date,&month,&year);就能够从输入数据中读取有效数据并废弃任何%*c所指定的数据(不将其赋给某个变量)。
程序清单如下:
#include<stdio.h>
main( )
{
      int month, day,yaer;
      printf("Enter a date in the form d-m-y:");
      scanf("%d%*c%d %*c%d",&date,&month,,&year);
      printf("date=%d month=%d year=%d\n",date ,month,year);
}
运行结果:
      Enter a date in the from d-m-y:12/3/2003
      day=12,month=3,year=2003

③l和h
用于说明输入的数据时长整型(l)或短整型(h)。l和h可以和转换说明符d、o、x一起使用,形式为%ld、%lo、%lx、%hd、%ho、%hx,此外l还可以与f或e一起(%lf或%le)表示输入double型数据。
例如:
      long a;
      short b;
      scanf(“%10ld%hd”,&a,&b);
表示变量a的数据按宽度为10的长整型读入,而变量b的数据按短整型读入。
3)普通字符(非格式字符)
格式控制字符串中除了格式字与修饰符外,还可以包含普通字符,这些普通字符包括:可打印字符、空格和转义字符。
①可打印字符:对scanf函数,如果格式控制字符串中的说明符之间包含有其他字符,那么在输入数据时,必须在相应位置读入这些字符。
例如 :
      int a,b;
      scanf(“%d,%d”,&a,&b);
若数据输入:1<空格>2;则只有变量a的数据是正确的,变量b则会发生错误。这是因为格式控制字符串中存在可打印字符“,”,所以在读入数据时,必须以“,”作为输入数据的分隔符。
正确地读入数据方式应为:1,2<回车>
又如:scanf(“a=%d,b=%f,c=%c”,&a,&b,&c);当输入为:1,2,a时,虽然采用了“,”分隔数据,但也会产生错误,因为在格式控制字符串中还有其他的可打印字符(如:“a=”,“b=”,“c=”等)。也就是说,这些字符作为输入数据的分隔符,在scanf函数读入数据时自动去掉。因此正确地数据读入方式应为:a=1,b=2.1,c=a<回车>
②空格
格式控制字符串中的空格可以分隔数据,在多个数据输入过程中,如果没有普通字符做数据的分隔符,则在数值数据输入时,可以用空格作为读入数据的分隔符,但在字符数据输入时,空格则不能作为数据之间的分隔符,它将被作为有效数据处理。
③转义字符
在以%c格式的数据读入中,转义字符被作为有效字符处理。而在格式控制字符串中的转义字符具有输入转义字符所代表的控制代码或特殊字符的功能。
请分析下面程序代码:
main()
{
      int a,b;
      scanf("%d%d\n",&a,&b);
      printf("a=%d,b=%d\n",a,b);
}
如果输入1 2,会发生什么现象?应该怎样读入数据,才能得到执行结果?


提示

尽量不要在scanf()函数的格式控制字符串中出现普通字符,特别是转义字符,它会增加读入数据的难度并可能造成不可预料的错误。

printf函数的调用格式

printf函数是一个标准库函数,能够以精确的格式输出程序运算的结果。printf函数的调用格式为:
      printf(“格式控制字符串”,输出项列表);
printf函数有两项参数:用“”引起来的格式控制字符串和向标准设备输出的数据。每次调用printf函数时都要包含描述输出格式的 “格式控制字符串”。
格式字符串是由格式字符(包括:转换说明符、标志、域宽、精度)和普通字符组成,转换说明符和百分号(%)一起使用,用来说明输出数据的数据类型、标志、长度和精度。
输出项列表可以是常量、变量和表达式,也可以没有输出项,这些输出项必须与格式控制字符串在类型和数量上完全对应,否则,结果将不可预测。当有多个输出项时,各个输出项之间用逗号‘,’分隔。

提示

在开始使用printf函数时最常犯的错误是忘记用双引号将格式控制字符串括起来。


——摘自高克宁 雒兴刚主编《高级语言程序设计》
 
 
 
 
 printf函数的最简单的使用

当没有输出项时,函数的参数只有“格式字符串”。函数完成的功能就是将“”中的字符串输出(显示在屏幕上)。
例1: 输出字符串hello Cprogramming!
main()
{
      printf(“hello Cprogramming!”);
}
可以在显示器屏幕上看到输出结果为:hello Cprogramming!
printf函数永远不会自动换行,如果想将hello Cprogram!分行输出,输出形式如下:
      hello
      Cprogram!
则需要引入转移字符\n,或者多次调用printf函数分段输出。程序如下:

main()
{
      printf(“hello\n Cprogram!”);
}
或:
main()
{
      printf(“hello\n”);
      printf(“Cprogram!”); }

其中:“\n”是一个转移字符,是控制字符。它的作用是使计算机执行printf函数时,指示从下一行的右边开始的换新一行输出。所以显示器上出现了两行字符。如果在字符串中忘记了“\n”,那么输出的结果就没有换行(尽管可以多次调用printf函数)。例如下面的程序:
main()
{
      printf(“hello”);
      printf(“Cprogram!”);
}
输出结果仍为:hello Cprogram!
转义字符的含义参见下表。

转义字符

意义

\n

换新行起始符

\r

回车(到本行起始)

\b

退格符

\f

换页符

\t

横向制表符

\v

纵向制表符

\\

反斜杠

\'

单引号

\"

双引号

\?

问号

\0

空字符(NULL)

\ddd

1到3为八进制数所代表的字符

\xhh

1到2位十六进制树所代表的字符

转义字符只能是用小写字母,每个转移字符被看成是一个字符常量。如:‘\0’但是:用单引号‘’括起来的一个汉字如‘好’则不是字符常量;同样用双引号“”括起来的单个字符如“a” 也不是字符常量,它是字符串常量。

因为双引号“”、单引号‘’、反斜杠\等在C语言中的特殊作用,如果要在字符串重新打印这些字符,则不能直接使用这些字符,而要使用转义字符“\””、“\’”、“\\”等。
例如:输出“hello Cprogram!”,程序应改为:
main()
{
      printf(“\”hello Cprogram!\””);
}

提示

可以在printf()函数中适当的运用转义字符,以增加输出效果。但是要注意每个转义字符的不同含义,不要弄混。


——摘自高克宁 雒兴刚主编《高级语言程序设计》

 
 
格式化输出

在使用printf函数时,当系统遇到输出的转换说明符后,会自动用后面对应的输出项的值代替它的位置,然后输出。格式控制字符串中的转换字符应与输出列表中的待输出项之间应一一对应,这些转换字符控制对应的输出项以该格式输出。数据类型必须与格式符相匹配。
格式控制字符串的一般形式:
       % [修饰符] 转换说明符
其中修饰符为可选项,包括标志修饰符、宽度修饰符、精度修饰符、长度修饰符,用于确定输出数据的宽度、精度、对齐方式等,用于产生更加规范、整齐、美观的数据输出形式,当没有修饰符时,以上各项按系统缺省值设定显示。
1)转换说明符
转换说明符规定了对应输出项的输出格式,即将输出的数据转换为指定的格式输出。该项不能省略。常用的转换说明符及其含义见表1。

表1 转换说明符及其含义

转换说明符

意义

C

按字符型输出

d或i

按十进制整数输出

u

按无符号十进制整数输出

f

按浮点型小数输出

E或e

按指数形式(科学计数法)输出

o

按八进制整数输出(不输出前缀o)

X或x

按十六进制整数输出(不输出前缀ox)

s

按字符串输出

G或g

按e和f格式中输出宽度较短的一种形式输出

转换说明符要与%一起使用,不能省略%。上表中的字符只有放在%的后面才作为输出的转换说明。
例如:
      int max;
      printf(“%d”,max);
表示变量max的值以十进制整数形式输出。
又如:
      int d=15;
      printf(“d=%d”,d);
在该格式控制字符串中,第1个d不是输出格式字而是一个普通字符,需要按原字符形式输出,第3个d是一个变量名,是输出项,只有放在%后的第2个d才是转换说明符, 说明变量d的值(15)以十进制整数形式输出。输出格式是:d=15。

提示

printf()函数中的格式字中,除格式说明符E、G、X外,其它格式说明符必须小写。

例1:输出格式控制符的使用。
main( )
{
      int a1=+400,a2=-400;
      float b=3.1415926,e=31415.26535898;
      float g=3.140000;
      char c='a';
      double d=3.1415926535898;

      printf("a1=%d\n",a1);
      printf("a1=%o\n",a1);
      printf("a1=%x\n",a1);
      printf("a1=%u\n",a1);
      printf("a2=%d\n",a2);
      printf("a2=%u\n",a2);
      printf("b=%f\n",b);
      printf("e=%e\n",e);
      printf("g=%g\n",g);
      printf("d=%f\n",d);
      printf("c=%c\n",c);
      printf("s=%s\n", "Cprogram");
}
执行程序,输出结果为:
      a1=400
      a1=620
      a1=190
      a1=400
      a2=-400
      a2=65136
      b=3.141593
      e=3.141593e+04
      g=3.14
      d=3.141593
      c=a
      s=Cprogram
从输出结果可以看出:只有减号(-)才会被打印出来,加号(+)是不打印的。?使用%u格式控制符打印正整数时,该数不发生变化,但是打印负整数时,该负整数将被转换为无符号整数并打印出来。?缺省情况下,使用%f、%e、%E打印出来的值带有6个小数位,如果小数位数不够6位,则在最后添0补位。?单精度数一般有7位有效数位。使用%e和%E打印的带有指数的值,在指数前打印出字母e或E,同时小数点左侧的数字仅打印一位(科学计数法)。双精度数可以用%f格式输出,它的有效位一般为16位,6位小数位。 %g不打印输出数据的小数部分尾部的0。
一个转换说明符是以%开始,以表3-2中的字符结束。其中可以插入修饰符。
2)长度修饰符
常用的长度修饰符有两种:l(长)表示按长整型量输出,h(短)表示按短整型量输出。可以和输出转换说明符d、f、u等连用。其用法和含义见表2。

表2 长度修饰符的意义

格式

意义

%ld

用于长整型数据的输出

%hd

用于短整型数据的输出

%lf

用于双精度型数据的输出

例2:长度修饰符的使用。
main()
{
      long int a=1234567;
      int b=12345;
      double d=1234567.123456789;
      printf("a=%ld\n",a);
      printf("b=%hd\n",b);
      printf("d=%lf\n",d);
}
执行程序,结果如下:
      a=1234567
      b=12345
      d=1234567.123457
例3:读入数据与输出数据类型的匹配。
main( )
{
      int a;
      printf(“enter a data:\n”);
      scanf("%d",&a);
      printf("%d\n",a);
}

程序运行结果:
      enter a data:
      100000000
      -520036096
由于输入数据的类型为整型,读入的数据本身已超出基本整型范围,使计算结果发生错误,同时,输出函数的输出格式字为长整型,造成输出结果与输入数据不相符。因此应将程序修改如下:
main( )
{
      long int a;
      clrscr();
      printf("enter a data:\n");
      scanf("%ld",&a);
      printf("%ld\n",a);
}
      enter a data:
      10000000l
      10000000

提示

输入长整型数据时,应在数据的后面加上字母‘l’或‘L’。

3)宽度修饰符和精度修饰符
宽度修饰符用来指定printf()函数输出数据的占位宽度,用一个十进制整数表示输出数据的位数,插在百分号%与转换说明符之间,其作用是控制打印数据的宽度,也称为“域宽”。
也可以在prinf函数中指定输出数据的精度。以一个小数点开始,后紧跟着一个十进制整数表示精度,插在百分号%与转换说明符之间。对于不同数据类型,精度的含义也不相同:在使用%d时,精度表示最少要打印的数字的个数。在使用%f、%e、%E时,精度是小数点后面显示的数字个数。在使用%s时,精度表示输出的字符串中字符的个数。

提示

scanf不允许指定精度输入。

宽度和精度也可以同时使用,其使用形式是:域宽.精度。
常用的宽度修饰符与精度修饰符说明以及含义见表3。

表3 宽度修饰符与精度修饰符说明

修饰符及说明格式

意义

%md

以宽度m输出整型数,不足m位数时左侧补以空格。

%0md

以宽度m输出整型数,不足m位数时左侧补以0(零)。

%m.nf

以宽度m输出实型数,小数位数为n位。

%ms

以宽度m输出字符串,不足m位数时左侧补以空格。

%m.ns

以宽度m输出字符串左侧的n个字符,不足m位数时左侧补以空格。

例3:宽度修饰符和精度修饰符的使用。
main()
{
      printf("%3d\n",1);
      printf("%3d\n",10);
      printf("%3d\n",100);
      printf("%3d\n",1000);
      printf("%0.3d\n",1);
      printf("%0.3d\n",10) ;
      printf("%0.3d\n",100);
      printf("%0.3d\n",1000);
      printf("%.3d\n",1);
      printf("%.3d\n",10);
      printf("%.3d\n",100);
      printf("%.3d\n",1000);
      printf("%7.2f\n",123.4567);
      printf("%5.2f\n",123.4567);
      printf("%2.7f\n",123.4567);
      printf("%5s\n","Cprogram");
      printf("%7.3s\n","Cprogram");
      printf("%2.6s\n","Cprogram");
}
执行程序,结果如下:
      1
      10
      100
      1000
      001
      010
      100
      1000
      001
      010
      100
      1000
      123.46
      123.46
      123.4567000
      Cprogram
      Cpr
      Cprogr
分析程序的结果,可以看出:
如果被打印的实际数据的宽度小于指定的宽度,则缺省下在宽度内为右对齐。左补空格或补0。直到总的数据个数满足宽度的要求。
当指定的输出数据宽度小于数据的实际宽度时,则按实际数据的位数输出打印(宽度自动增加);对于整数而言,按该数的实际宽度输出;对于浮点数,按实际位数输出,但如果制定了浮点数的精度,则相应的小数位按精度的位数四舍五入;对于字符串,按实际串长度输出。
通常情况下,精度用于描述浮点数的小数位数,但是,当采用精度描述整数或字符串时,如果被打印的整数数据包含的数字个数小于指定的精度,就在被打印数据的前面加0,直到总的数字个数等于该精度为止。而对于被打印的字符串,则精度确定该字符串左侧的字符个数,这些字符输出在指定域宽的右侧。不足域宽位数时左侧补以空格。
在实际程序应用中,还有一种更为灵活的宽度和精度的控制方法,用整型常量或整型变量的值作为输出数据的域宽和精度。方法是以“*”取代域宽修饰符和精度修饰符放在%的后面,以计算出来的整数表达式的值作为宽度和精度。
例如:
      float a=123.45;
      printf(“%*.*f”,6,1,a);
此处6为输出宽度,1为输出精度,输出结果为: 123.5,右对齐。

提示

没有为要打印的数据提供足够大的宽度,使得其他被打印的数据发生位置偏移,从而产生令人费解的输出格式。

4)标志修饰符
在printf 函数中,可以使用标志修饰符控制输出格式。常见的标志修饰符见表4。

表4 标志修饰符及其作用

标志修饰符

意义

-

“左对齐”方式:输出数据左对齐,右侧补空格。缺省时输出数据则为右对齐,左补格。

+

输出数据为正时,在数据之前显示一个+号,为负时,在数据之前显示一个-号。

#

输出数据为八进制时加前缀0,为十六进制时前缀0x。

空格

输出数据为正值时,在数据之前打印空格,为负时,数据之前显示一个-号。

例4:标志修饰符的使用。
main()
{
      printf("%10d\n",123);
      printf("%-10d\n",123);
      printf("%10.2f\n",123.45678);
      printf("%-10.2f\n",123.45678);
      printf("%10s\n","Cprogram");
      printf("%-10s\n","Cprogram") ;
      printf("\n");
      printf("%+5d\n",12345);
      printf("%+5d\n",-12345);
      printf("% 5d\n",12345);
      printf("% 5d\n",-12345);
      printf("\n");
      printf("%#o\n",100);
      printf("%o\n",100);
      printf("%#x\n",100);
      printf("%x\n",100);
}
执行程序,结果如下:
      123
                   123
      123.46
      123.46
      Cprogram
         Cprogram

      +12345
      -12345
      12345
      -12345

      0144
      144
      0x64
      64

提示

数据输出时,注意输出格式基对齐方式的统一,否则造成输出数据难以读懂。
例如:
      int x=123,y=456;
      printf(“%3d%-3d”,x,y);
其结果是:123456

5)普通字符
格式控制字符串中可以包含大量的可打印字符和转义字符,可打印字符主要是一些说明字符,这些字符将按原书写样式显示在屏幕上,如果有汉字系统支持,也可以输出汉字。转义字符是不可打印字符,用以控制产生特殊的输出效果。
例如:
      int a=123,b=12345;
      printf("a=%d,",a);
      printf("b=%d\n",b);
其输出结果为:a=123,b=12345
在第一个printf函数的格式控制字符串中,’a’、’=’和’,’都是普通字符,可以打印出来。第二个printf函数的格式控制字符串中的’b’和’=’也是可打印字符,但\n时是转义字符,不能够打印出来,表示要换行输出。将该程序改动一下,其输出形式也将发生改变。
      int a=123,b=12345;
      printf("a=%d\n",a);
      printf("b=%d\n",b);
输出形式为:
      a=123
      b=12345
在第一个printf函数的格式控制字符串中,a和=是普通字符,打印出来。’\n’虽然没有打印出来,但是它指示第二个printf函数换到下一行左侧输出。

——摘自高克宁 雒兴刚主编《高级语言程序设计》

 


 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    请遵守用户 评论公约

    类似文章
    喜欢该文的人也喜欢 更多