C语言数据的输入与输出

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

C语言数据的输入与输出

C语言数据的输入与输出

一.Printf函数

函数原型在头文件stido.h中(使用时可以不包括)

printf函数的返回值等于成功输入得数据的个数

1.printf函数得一般调用形式

printf(格式控制字符串,输出项列表)

格式控制字符串包括:

(1)格式指示符

格式:%[标志][宽度][.精度][[h|l]<类型>]

(2)转义字符

如:'\n','\0'

(3)普通字符

如:printf("max=%d,min=%d\n",a,b);

“max=”和“,min=”是普通字符;“%d”是格式指示符;“\n”是转义字符;

a和b是输出类表中的输出项(可以是常量、变量、或表达式)。

2.print函数中常用得格式控制说明

(1)数据类型控制字符

格式字符说明

%c输出一个字符

%d或%i以十进制形式输出一个带符号得整数(正数不输出符号)%u以十进制形式输出无符号整数。若有符号则自动将符号位转化为数值位,%o 和%x也具有类似得功能

%o以八进制形式输出无符号整型数(不带前导0)

%x或%X以十六进制形式输出无符号整型数(不带前导0x或0X)。对于十六进制数中的字符abcdef,用%x时输出得是小写字母,%X时输出的是大写字母

%f以小数形式输出单精度或双精度实数

%e或%E以指数形式输出单精度或双精度实数

%g或%G有系统决定是采用%f还是%e格式,以使输出结果的总宽度最小,并且不输出没意义的0

%s依次输出字符串中得各个字符,知道遇到'\0'是结束

(2)数据类型修饰符

数据类型修饰符在%和数据类型控制符之间

如:长整型"%ld",短整型"%hd"

(3)输出数据所占得宽度与精度

1)在%与格式字符之间插入一个整数来指示输出宽度。

若指定得输出宽度不够,系统自动以数据实际值得宽度作为输出宽度;如果

指定的输出宽度多于数据实际所需宽度,数据右对齐,左边补以空格。

如:printf("%5d\n",42);\*输出结果:42*\

2)float或double类型得实型数可以用“整数1.整数2”的形式在指定总

宽度的同时指定小数位得宽度。“整数1”指定输出数据得总宽度(小数点也

要计算在内),“整数2”称之为精度,即小数位的位数。

注意:输出数据得实际精度并补取决与格式控制中的域宽和小数得位宽,而是取

决于数据在计算机内的存储精度。

(4)标志控制字符

1)输出数据左对齐的标志字符“-”,在指定输出宽度之前。

如:printf("%-5d##\n",24);\*输出结果:24##*\

2)输出数字总是带正负号得标志字符“+”,在%和格式字符之间(或指定得

输出宽度前)

如:printf("%+d,%+d\n",100,-200);\*输出结果:+100,-200*\ 3)在输出数据前加前导0,可以在指定输出宽度得同时,在数据

前面得多于

空格处填以数字0。

如:printf("%05d\n",59);\*输出结果:00059*\

二.Scanf函数

函数原型在头文件stdio.h中(使用时可以不包括)

Scanf函数的返回值等于成功输入得数据的个数。

1.scanf函数得一般调用形式

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

格式控制字符串:%[*][输入数据宽度][h|l]<类型>

地址列表是各变量得地址,如:&a,&b

2.scanf函数中常用的格式控制说明

格式字符说明

%c输入一个字符

%d输入十进制整型数

%i输入整型数,可以是十进制整型数,也可以是带前导0的八进制数,或带前导0x(0X)的十六进制数

%u输入无符号十进制整数

%o以八进制形式输入整型数(可以带前导0,也可以不带)

%x以十六进制形式输入整型数(可以带前导0x或0X,也可以不带)

%f或%e以带小数点的形式输入或指数形式输入实型数

%s输入字符串,注意字符串中间不允许出现空格字符

l用于长整型数(%ld、%lu、%lo、%lx)或double型实数(%lf、%le)h用于短整型数(%hd、%hu、%hu、%hx)n一个正整数,用来指定输入数据所占宽度(%5d、%2d)

*表示将对应得输入值丢掉,不赋值给任何一个变量。

2.scanf函数输入数据时需要注意

(1)格式控制中得数据类型与地址列表中的数据的类型应该一一对应匹配。

如果类型不匹配,系统并不给出错误信息,但不可能得到正确得

数据。

(2)当输入的数据多于输入项时,多余的数据并不消失,而是留在缓冲区中,

作下一个输入操作时的输入数据。为不影响下一个输入操作,可以在下一个输入函数之前用清除函数fflush(stdin)清除输入缓冲区中的残余数据。

(3)若在scanf的格式控制字符串中插入了其他字符,则在输入是要求一一对

应的位置原样输入这些字符。

如:scanf("Input a,b,c:%d%d%d",a,b,c);

要求按以下形式输入:Input a,b,c:123

(4)字符型数据的输入

程序运行时,在键盘上输入一个字符A后按回车键(要完成输入操作必须按回车键),程序在执行scanf("%c",&c1)时,给变量c1赋值A,但回车符依然留在缓冲区中,执行scanf("%c",&c2)时,变量c2得到该回车符。为避免此问题,可以在第二个输入函数前加入清除输入缓冲区的函数fflush(stdin)。

三.Putchar函数

四.Getchar函数输入单字符

五.Puts函数

六.Gets函数

输入字符串

相关文档
最新文档