第三章数据输入与输出 △C语言无I/O语句,I/O操作由函数实现 △#include §3.1数据输出 ★字符输出函数 格式:putchar(c) 参数:c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为OF(-1)
格式: putchar( c ) 参数: c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为EOF(-1) 第三章 数据输入与输出 C语言无I/O语句,I/O操作由函数实现 #include §3.1 数据输出 字符输出函数
例 Ch3_1.c /*ch31.c*/ #include mainO int c; char a; c=65,a=B'; putchar(c);putchar(n');putchar(a): 运行结果: A B
/*ch3_1.c*/ #include main() { int c; char a; c=65; a='B'; putchar(c); putchar('\n'); putchar(a); } 运行结果:A B 例
★格式输出函数 格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1) 父输出表:要输出的数据(可以没有,多个时以“,”分 隔) $格式控制串:包含两种信息 ●格式说明: %[修饰符]格式字符,用于指定输出格式 ●普通字符或转义序列:原样输出 公格式字符
格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1) 格式输出函数 ❖输出表:要输出的数据(可以没有,多个时以“,”分 隔) ❖格式控制串:包含两种信息 ⚫格式说明: %[修饰符]格式字符 ,用于指定输出格式 ⚫普通字符或转义序列:原样输出 ❖格式字符
格式字符: di 十进制整数 int a=567;printf("%d",a); 567 x.X 十六进制无符号整数 inta=255;printf%x”,a)月 f 0 八进制无符号整数 int a=65;printf("%o",a); 101 u 不带符号十 例main0 567 单一字符 例 int a=3,b=4; s 字符串 printf(%d%dn”,a,b)i e,E 指数形式浮 printf“a=%d,b=%dn”,a,b,b); 0e+02 f 小数形式浮 输出结果:34 567.789000 g e和f中较短 a=3,b=4 567.789 %% 百分号本身 printf("6y%万 % ●说明 1111111111111111 65535 ◆格式字符要用小写 ◆格式字符与输出项个数应相同,按先后顺序一一对应 ◆输出转换:格式字符与输出项类型不一致,自动按指定格式 输出
d,i x,X o u c s e,E f g %% 格式字符: 十六进制无符号整数 不带符号十进制整数 十进制整数 指数形式浮点小数 单一字符 字符串 八进制无符号整数 小数形式浮点小数 e和f中较短一种 百分号本身 int a=567;printf ( “%d”,a); int a=255;printf(“%x”,a); int a=65;printf(“%o”,a); int a=567;printf(“%u”,a); char a=65;printf(“%c”,a); printf(“%s”,“ABC”); float a=567.789;printf(“%e”,a); float a=567.789;printf(“%f”,a); float a=567.789;printf(“%g”,a); printf(“%%”); 567 ff 101 567 A ABC 5.677890e+02 567.789000 567.789 % ⚫说明 ◆格式字符要用小写 ◆格式字符与输出项个数应相同,按先后顺序一一对应 ◆输出转换:格式字符与输出项类型不一致,自动按指定格式 输出 例 main() { unsigned int u=65535; printf(”u=%d\n",u); } 输出结果:u=-1 例 int a=3,b=4; printf(“%d %d\n”,a,b); printf(“a=%d , b=%d\n”,a,b); 例 int a=3,b=4; printf(“%d %d\n”,a,b); printf(“a=%d , b=%d\n”,a,b); 输出结果: 3 4 a=3, b=4 11 11 11 11 11 11 11 11 65535
附加格式说明符(修饰符) 修饰符 功 能 m 输出数据域宽,数据长度<,左补空格;否则按实际输出 对实数,指定小数点后位数(四舍五入) .n 对字符串,指定实际输出位数 输出数据在域内左对齐(缺省右对齐) 指定在有符号数的正数前显示正号(+) 0 输出数值时指定左面不使用的空位置自动填0 # 在八进制和十六进制数前显示前导0,0x 在d,0,X,u前,指定输出精度为long型 在e,f,g前,指定输出精度为double型
❖附加格式说明符(修饰符) .n 对实数,指定小数点后位数(四舍五入) 对字符串,指定实际输出位数 修饰符 功 能 m 输出数据域宽,数据长度<m,左补空格;否则按实际输出 - 输出数据在域内左对齐(缺省右对齐) 指定在有符号数的正数前显示正号(+) + 0 输出数值时指定左面不使用的空位置自动填0 # 在八进制和十六进制数前显示前导0,0x 在d,o,x,u前,指定输出精度为long型 在e,f,g前,指定输出精度为double型 l
例 m.n 例inta=1234: float f=123.456; char ch=-‘a'; printf8d,%2d n"a,a); printf"9f%8f%8.1f%.2f%.2eln"fffff): printf(%3cln”,ch)g 运行 1234,1234 结果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a static char a[]="Hello,world!" printf("%sn%15s\n%10.5s\n%2.5s\n%.3s n",a,a,a,a,a); 运行结果:Hello,.world Hello,world! Hello Hello Hel
例 int a=1234; float f=123.456; char ch=‘a’; printf(“%8d,%2d\n”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f); printf(“%3c\n”,ch); 运行 1234,1234 结果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a 例 static char a[]=“Hello,world!” printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a); 运行结果:Hello,world! Hello,world! Hello Hello Hel 例 m.n
例 例 inta=1234; f1oatf-123.456; static char c[]="Hello,world!"; printf("8d,%-8d n",a,a); printf%10.2f,%-l0.1fn”,ffD房 printf("%10.5s,%-10.3s\n",c,c); 运行结果: 1234,1234 123.46,123.5 Hello.Hel
例 int a=1234; float f=123.456; static char c[]=“Hello,world!”; printf(“%8d,%-8d\n”,a,a); printf(“%10.2f,%-10.1f\n”,f,f); printf(“%10.5s,%-10.3s\n”,c,c); 运行结果: 1234,1234 123.46,123.5 Hello,Hel 例 -
例0、+ 例 inta=1234; float f=123.456; printf%08dln”,a); /00001234 printf%010.2fn”,f; /0000123.46 printf(%0+8dn”,a; /000+1234 printf(0+l0.2fn”,f; 1/000+123.56 例并 例 int a=123; printf"0%#0,%X,%#X n",a,a,a,a); /173,0173,7B,0X7B 00000000000000010000000000000000 例1 例long a=65536; printf"%d,%8ldn",a,a); 1/0, 65536
例 int a=1234; float f=123.456; printf(“%08d\n”,a); printf(“%010.2f\n”,f); printf(“%0+8d\n”,a); printf(“0+10.2f\n”,f); 例 0 、+ 例 int a=123; printf(“%o,%#o,%X,%#X\n”,a,a,a,a); 例 # 例 long a=65536; printf(“%d,%8ld\n”,a, a); 例 l 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 //00001234 //0000123.46 //000+1234 //000+123.56 //173,0173,7B,0X7B //0, 65536
§3.2数据输入 ★字符输入丞数 格式:getchar() 功能:从键盘读一字符 返值:正常,返回读取的代码值;出错,返回EOF(-1) 例 /*ch34.c*/ #include c main() 运行结果: Ch3 4c int c; Enter a character:A. printf("Enter a character:") A->hex41 c=getcharO; printf("%c->hex%ox n",c,c);
格式:getchar( ) 功能:从键盘读一字符 返值:正常,返回读取的代码值;出错,返回EOF(-1) §3.2 数据输入 字符输入函数 例 /*ch3_4.c*/ #include main() { int c; printf("Enter a character:"); c=getchar(); printf("%c->hex%x\n",c,c); } 运行结果: Enter a character:A A->hex41
★格式输入丞数 格式:scanf(格式控制串”, 地址表) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束 返值:正常,返回输入数据个数 父地址表:变量的地址,常用取地址运算符& 格式字符:d,i,0,Xu,c,s,f,e 例 scanf("%d",&a); 例 scanf%x”,&a): 输入:10小 输入:11J 则 a=10 则 a=17
格式输入函数 格式: scanf(“格式控制串”,地址表) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束 返值:正常,返回输入数据个数 ❖地址表:变量的地址,常用取地址运算符& ❖格式字符:d,i,o,x,u,c,s,f,e 例 scanf(“%d”,&a); 输入:10 则 a=10 例 scanf(“%x”,&a); 输入:11 则 a=17