c语言格式输入与输出

putchar()函数和getchar()函数只能输出和输入一个字符,若要同时输入多种数据类型的数据,则可以使用格式输入输出函数。这种函数不但能输入输出各种类型的数据,而且还可以控制数据输入输出时每个数据的输入输出格式。

3.3.1 printf( )函数 (格式输出函数)

printf()函数的作用:向计算机系统默认的输出设备(一般指显示器)输出一个或多个任意类型的数据printf函数的调用格式:

printf(“格式控制”,输出表列)

:printf(%d,%d/n",a,b)

 1.格式控制

格式控制也称“转换控制字符串”,是由双引号括起来的字符串,用于指定输出格式。它由以下三部分组成:

1)格式说明:

由“%”字符开始,在“%”后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位等格式。如 “%d”表示按十进制整型输出,“%f”表示按实型数据输出6位小数,“%c”表示按字符型输出等。C语言中提供的格式字符如表3.1所示

3.1  printf格式字符

格式字符

说明

d

以十进制形式输出带符号的整数

u

用来输出unsigned型整数,以十整制无符号形式输出整数

o

以八进制无符号形式输出整数

x

以十六进制无符号形式输出整数

c

用来输出单个字符

s

用来输出一个字符串,以'/0'为结束标志

f

以十进制形式输出实数(单精度和双精度浮点数),以小数形式输出

e

以十进制指数形式输出实数

g

用来输出实数(单精度和双精度浮点数),并根据数值大小自动取f格式符或e格式符(选择输出时字段宽度较小的一种),且不输出无意义的零

2)普通字符:

普通字符输出时将原样输出。其作用是作为输出时数据的间隔,在显示中起提示作用。象printf函数中双引号内的逗号、空格和普通的字母等。

如:printf("x=%d,%c",12,6*8); x=”和 “,”都是普通字符。此语句的输出结果是:x=12,48

(3)转义字符:

常用的有Tab键'/t'、回车换行'/n'等。

: printf"x=%d/n",x,;

函数中双引号内的'/n'就是一个换行符,它的作用是输出完x的值后将产生一个“换行”操作。常用的转义字符见第2章表2.1

这里的普通字符和转义字符均为非格式字符。

2.输出表列

需要输出的数据项,由若干表达式组成,表达式之间用逗号分隔。特别注意的是,这些表达式虽然用逗号分隔,但不是逗号表达式,而且计算的顺序是自右向左进行的。

 

注意:格式字符串中的格式字符和各输出项在数量和类型上应该一一对应。

3.附加说明字符

在格式说明中,在%和格式字符间可以插入表3.2中的几种附加说明符。

3.2  printf的附加格式说明符

字符

说明

字母l

用于长整型,可加在格式符doxu的前面

m(代表一个正整数)

数据输出时的最小宽度

n(代表一个正整数)

对实数表示输出n位小数,对字符串则表示截取的字符个数

-

输出的数字或字符在域内向左靠

例如:%4d  表示输出列宽为4的整型数,不够4位右对齐。     %-10d  表示输出列宽为10的整型数,不够10位左对齐。

     %7.2f  表示输出列宽为7的浮点数,其中小数位为2,整数为4,小数点占一位,不够7位右对齐。

     %8.5s  表示列宽为8,显示5个字符的字符串。字符串不够8位右对齐。

     %ld  表示输出long整数。

如果字符串的长度或整型数位数超过说明的列宽,则按其实际长度输出。但对浮点数,若整数部分超过了说明的整数位宽度,将按实际整数位输出;若小数部分位数超过了说明的小数位宽度,则按说明的列宽以四舍五入输出。

【例3.4格式输出函数使用举例

main()

   {int n1=45;

 

    float f1=123.456;

     char c1='a';

printf("n1=%d,n1=%od,n1=%x,n1=%u/n",n1,n1,n1,n1);

printf("f1=%f,f1=*%9.2f,f1=%-9.2f*/n",f1,f1,f1);

printf("c1=%c,c1=*%3c,c1=%-3c*,c1=%d/n",c1,c1,c1,c1);

printf("%s,%3s,%7.2s,%-5.3s*/n","china","china","china","china")

}

输出结果为:

n1=45,n1= 55n1=2d,n1=45

f1=123.456000,f1=*VVV123.46,f1=123.46VVV*

c1=a,c1=VVa,c1=aVV,c1=97

china,china,VVVVVch,chiVV*

注意:(1)第二个输出语句的输出结果中间的数字123.456前有三空格,最后一个数字123.46后也有三个空格。

(2) 第三个输出语句的输出结果中间的字母a前有二个空格,在第三个字母a后也有二个空格。

在使用printf函数时,还应注意以下几点:

(1)除了xeg这三个格式符既可用小写也可用大写外,其他格式符必须用小写字母。如%d不能写成%D等。

(2)格式符d可用i代替,di在作为格式符使用时,两者作用一致。

(3)上面介绍的doxucfeg等字符,如用在“%”后面则作为格式符号,如不在“%”后面则仅仅是一个普通字符而已。

如有语句:printf("t=%fs,y=%fg",t,y);

则第一个格式符为“%f ”,不包含其后的“s”;第二个格式符为“%f”,同样也不包含其后的“g”。其它字符如前所属,应原样输出。

若想输出字符“%”,则应在“格式控制字符串”中用两个连续的%表示,如: printf("%f%%/n",1.0/3.0);此时输出结果为:0.333333%

(4)在使用“f”格式符输出实数时,并非全部数字都是有效数字。单精度实数的有效位数一般为7位,双精度实数的有效位数一般为16位。

如:已知x=111111.111,y=222222.222

   则语句:printf("%f/n",x+y);

运行结果为:333333.328125

显然只有前面的7位数字是有效数字。后面的数字是无意义的。

3.3.2 scanf( ) (格式输入函数)

scanf( )函数的功能:从键盘按照“格式控制字符串”中规定的格式输入若干个数据,按“变量地址表列”中变量的顺序,依次存入对应的变量中。

scanf函数是一个标准库函数,它的函数原型在头文件stdio.h”中,和printf函数一样,也不要求在使用scanf函数之前必须使用文件包含命令:#include <stdio.h>

scanf函数的调用格式:

scanf(格式控制字符串,变量地址表列)

1.格式控制:

是由双引号括起来的字符串,和printf函数中的“格式控制字符串”含义相同,其中的格式说明,也和printf函数的格式说明相似,以“%”字符开始,以一个格式字符结束,中间可以插入附加的字符。

在格式控制字符串中若有普通的字符,则输入时原样输入。

例如:scanf("%d,%c,%f",&n,&p,&x);

这里的“%d,%c,%f”和格式输出时一样,也是格式控制字符串,控制数据输入时的格式。

2变量地址表列”是用逗号分隔的若干接收输入数据的变量地址。变量地址由地址运算符“&”后跟变量名组成。变量地址之间用逗号“,”分隔。

如“&n”、“&p”、“&x”就是变量的地址表列。&a&b&x分别表示变量a、变量b、变量x的地址。这个地址就是编译时系统在内存中给变量a、变量b、变量x分配的地址。注意变量与变量的地址的区别。对于地址的概念,在本书的第八章将会再作介绍。

【例3.5格式输入函数的使用。要求给变量abc分别赋值234,给变量xyx分别赋值567

    Main()

{int a,b,c,x,y,z;  

scanf("%d,%d,%d",&a,&b,&c)

scanf("x=%d,y=%d,z=%d",&x,&y,&z)

printf("%d,%d,%d",a,b,c)

printf("x=%d,y=%d,z=%d",x,y,z)

}

运行时的输入格式为:

2,3,4

x=5,y=6,z=7

输出结果为:

234

x=5,y=6,z=7

请注意以上两个输入语句在输入数据时的区别。

3.输入格式字符

输入格式字符见表3.2所示。

putchar()函数和getchar()函数只能输出和输入一个字符,若要同时输入多种数据类型的数据,则可以使用格式输入输出函数。这种函数不但能输入输出各种类型的数据,而且还可以控制数据输入输出时每个数据的输入输出格式。

你可能感兴趣的:(c,语言,float)