C语言输入输出函数格式详解

  • 格式:doc
  • 大小:224.50 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、输入和输出:

输入:输入也叫读,数据由内核流向用户程序

输出:输出也称写、打印,数据由用户程序流向内核

以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用

2、printf用法(其缺陷在于带缓存)

printf输出时必须加上\n(刷新缓存)

解释:第一幅图没有加'\n',不会刷新缓存区,则不会打印出来;第二幅图是因为主函数结束时刷新了缓存区,但由于没有换行符,所以没有换行便显示了后面的内容;第三幅图时正常打印。

变量定义的是什么类型,在printf打印时就需要选择什么格式符,否则会造成数据的精度丢失(隐式强转),甚至会出现错误

修饰符功能

m输出数据域宽,数据长度

对实数,指定小数点后位数(四舍五入)

.n

对字符串,按指定实际输出位数

-输出数据在域内左对齐(缺省右对齐)

+指定在有符号数的正数前显示正号(+)

0输出数值时指定左面不使用的空位置自动填0

#在八进制和十六进制数前显示前导0、0x和0X

在d、o、x、X、u前,指定输出精度为long型

l

在e、f、g前,指定输出精度为double型

(1)格式输出函数的一般形式

函数原型:int printf(char * format[,argument,…]);

函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,则返回负数。

A、它使用的一般形式为:printf("格式控制字符串",输出项列表);

B、语句中"输出项列表"列出要输出的表达式(如常量、变量、运算符表达式、函数返回值等),它可以是0个、一个或多个,每个输出项之间用逗号(,)分隔;输出的数据可以是整数、实数、字符和字符串。

C、"格式控制字符串"必须用英文的双引号括起来,它的作用是控制输出项的格式和输出一些提示信息,例如:

int i=97; printf("i=%d,%c\n",i,i);输出结果为:i=97,a

语句printf("i=%d,%c\n",i,i);中的两个输出项都是变量i,但却以不同的格式输出,一个输出整型数97,另一个输出的却是字符a,其格式分别由"%d"与"%c"来控制。

语句printf("i=%d,%c\n",i,i);的格式控制字符串中"i="是普通字符,他将照原样输出;"%d"与"%c"是格式控制符;"\n"是转义字符,它的作用是换行。

(2)格式控制

格式控制由格式控制字符串实现,格式控制字符串由3部分组成:普通字符、转义字符、输出项格式说明。

A、普通字符。普通字符在输出时,按原样输出,主要用于输出提示信息。(空格属于普通字符)

B、转义字符。转义字符指明特定的操作,如"\n"表示换行,"\t"表示水平制表等。

\n 换行

\f 清屏并换页

\r 回车

\tTab符

\xhh 表示一个ASCII码用16进表示,其中hh是1到2个16进制数

C、格式说明部分由"%"和"格式字符串"组成,他表示按规定的格式输出数据。

格式说明的形式为:% [flags] [width] [.prec] [F|N|h|l] type||%[标志][输出最少宽度][.精度][长度]类型

各部分说明如下:

a、[]表示该项为可选项,即可有可无,如printf("%d",100);

b、%:表示格式说明的起始符号,不可缺少。

c、flags为可选择的标志字符,常用的标志字符有:

- ——左对齐输出,默认为右对齐输出

+ ——正数输出加号(+),负数输出减号(-),如省略正数的+默认不显示

0 ——输出数值时指定左面不使用的空位置自动填0,如省略表示指定空位不填

# ——对c、s、d、u类无影响;对o类,在输出时加前缀0(数字0,八进制表示符);对x类,在输出时加前缀0x(字母为小写);对X类,在输出时加前缀0X(字母为大写);对e,g,f类当结果有小数时才给出小数点。

d、width为可选择的宽度指示符。

用十进制正整数表示设置输出值得最少字符个数。不足则补空格,多出则按实际输出,默认按实际输出,例如:

printf("%8d\n",100); (前面空五格)100

printf("%08d\n",100); (前面5个0)100

printf("%6d\n",100); (前面空三格)100

printf("%-8d\n",100); 100(后面空五格)

printf("%+8\n",100); (前面空四格)+100

e、[.prec]为可选的精度指示符

用“小数点”加“十进制正整数”表示,对“整数”、“实数”和“字符

串”的输出有如下功能:

对整数:表示至少要输出的数字个数,不足在整数之前补0,多则原样输出;

对实数:表示小数点后至多输出的数字个数,不足在实数之后则补数字0,多则做舍入处理;

对字符串:表示最多输出的字符个数,不足补空格,多则丢弃。

由上图可以看出,对于字符串而言,其实直接使用精度指示符是没有意义的,详细解释见(3)F

f、[F|N|h|l]为可选的输出长度修饰符,其功能如下:

F ——输出远指针存放的地址;

N ——输出近指针存放的地址;

h ——输出短整型数据的值;

l ——输出长整型或双精度型数据的值。

g、type指定输出的数据类型

(3)输出数据类型说明

格式字符用以指定输出项的数据类型和输出格式。

A、d格式:用来输出十进制整数。有以下几种用法:

%d:按整型数据的实际长度输出。

%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

%ld:输出长整型数据。

B、o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用"%mo"格式输出。

例:int main()

{

int a = -1;

printf("%d, %o", a, a);

}