C04数据的输入输出.ppt
第4章 数据的输入与输出55C C语言无语言无语言无语言无I/OI/O语句,语句,语句,语句,I/OI/O操作由函数实现操作由函数实现操作由函数实现操作由函数实现55标准输入输出库函数标准输入输出库函数标准输入输出库函数标准输入输出库函数 标准输入设备:键盘标准输入设备:键盘标准输入设备:键盘标准输入设备:键盘 、输出设备:显示器输出设备:显示器输出设备:显示器输出设备:显示器 输出函数:输出函数:输出函数:输出函数:printfprintf()()、putcharputchar()()、putsputs 输入函数:输入函数:输入函数:输入函数:scanfscanf()()、getchargetchar()()、getsgets#include include.h1格式控制串包含两种信息:格式控制串包含两种信息:格式说明:格式说明:%修饰符修饰符格式字符格式字符 用于指定输出数据的格式用于指定输出数据的格式普通字符或转义序列:原样输出普通字符或转义序列:原样输出格式:格式:printfprintf(“格式控制串格式控制串”,输出表,输出表)4.1 输出函数4.1.1 4.1.1 4.1.1 4.1.1 格式输出函数格式输出函数格式输出函数格式输出函数printfprintfprintfprintf()()()()要输出的数据:要输出的数据:可以没有数据;可以没有数据;也可以有多个数据,以也可以有多个数据,以“,”分隔分隔例如:例如:a,b,c 功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据2格式字符:格式字符:d,ix,Xoucse,Efg%十六进制无符号整数十六进制无符号整数不带符号十进制整数不带符号十进制整数十进制整数十进制整数指数形式浮点小数指数形式浮点小数单一字符单一字符字符串字符串八进制无符号整数八进制无符号整数小数形式浮点小数小数形式浮点小数e和和f中较短一种中较短一种百分号本身百分号本身int a=65;printf(“%d”,a);int a=65;printf(“%x”,a);int a=65;printf(“%o”,a);int a=65;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(“%”);654110165AABC5.677890e+02567.789001567.789%说明说明:格式字符与输出项个数应相同,按先后顺序格式字符与输出项个数应相同,按先后顺序一一对应一一对应;输出转换输出转换:格式字符与输出项类型不一致格式字符与输出项类型不一致,自自动按指定格式输出动按指定格式输出例例 /*ex4-4.c*/main()unsigned int u=65535;printf(”u=%dn,u);结果是多少?结果是多少?3修饰符(附加格式说明符)修饰符(附加格式说明符)修饰符(附加格式说明符)修饰符(附加格式说明符).n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功 能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0 x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l4/*ex4-1.c */例例 int a=1234;float f=123.456;char ch=a;char aa=“Hello,world!”;printf(“%8d,%2d,%-8dn”,a,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f);printf(“%10.2f,%-10.1fn”,f,f);printf(“%-3c%5cn”,ch,*);printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,aa,aa,aa,aa,aa);例子(m、n、-)5例例 int a=1234;float f=123.456;printf(“%08dn”,a);printf(“%010.2fn”,f);printf(“%+08dn”,a);printf(“+010.2fn”,f);/00001234/0000123.46/000+1234/000+123.56例例 int i=123;printf(“%o,%#o,%X,%#Xn”,i,i,i,i);/173,0173,7B,0X7B例例 long a=65536;printf(“%dn”,a);printf(“%ldn”,a);00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 /0例子(0、+、#、l)EX4-6.C /655366/*ex4-3.c*/#include main()int c;char a;c=65;a=B;putchar(c);putchar(n);putchar(a);格式格式:putcharputchar(c)(c)参数参数:c c为字符常量(为字符常量(包括控制字符包括控制字符)、变量、表达式)、变量、表达式 或整型变量(表示输出字符的或整型变量(表示输出字符的asciiascii码值)码值)功能:把字符功能:把字符c c输出到显示器上输出到显示器上4.1.2 字符输出函数putchar()7/*ex4-4.c*/#include main()char s=“Welcome to mianyang”;puts(“String is:n”);puts(s);printf(“%s”,s);格式格式:puts(c)puts(c)参数参数:c c为字符串常量、字符串数组变量、表达式为字符串常量、字符串数组变量、表达式功能:把字符功能:把字符串串c c输出到显示器上,输出后自动换行输出到显示器上,输出后自动换行4.1.3 字符串输出函数puts()8 4.2.14.2.14.2.14.2.1格式输入函数格式输入函数格式输入函数格式输入函数scanfscanfscanfscanf()()()()格式格式:scanfscanf(“(“格式控制串格式控制串”,地址表),地址表)例例 scanf(“%d”,&a);输入:输入:10 则则 a=10 scanf(“%d,%c”,&a,&c);输入:输入:10,*则则 a=10 c=*例例 scanf(“%x”,&a);输入:输入:11 则则 a=174.2 数据输入功能:按指定格式从键盘读入数据,存入地址表指定的功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中存储单元中地址表:变量的地址,常用取地址运算符地址表:变量的地址,常用取地址运算符&,可以同时输入可以同时输入多个数据,以多个数据,以“,”分隔分隔格式控制串包含两种信息:格式控制串包含两种信息:格式说明:格式说明:%修饰符修饰符格式字符格式字符 用于指定输出数据的格式(用于指定输出数据的格式(d,i,o,x,u,c,s,f,e)普通字符或转义序列:原样输入普通字符或转义序列:原样输入9l修饰符修饰符功功 能能hm*用于用于d,o,xd,o,x前,指定输入为前,指定输入为shortshort型整数型整数用于用于d,o,xd,o,x前,指定输入为前,指定输入为longlong型整数型整数用于用于e,fe,f前,指定输入为前,指定输入为doubledouble型实数型实数指定输入数据宽度,遇空格或不可转换字符则结束指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量抑制符,指定输入项读入后不赋给变量例例 scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入输入 19991015 则则1999yy,10 mm,15 dd例例 scanf(“%3d%*4d%f”,&k,&f);输入输入 12345678765.43 则则123k,8765.43f例例 scanf(“%2d%*3d%2d”,&a,&b);输入输入 12 345 67 则则12a,67b例例 scanf(“%3c%2c”,&c1,&c2);输入输入 abcde 则则ac1,d c2修饰符(附加格式说明符)修饰符(附加格式说明符)10输入分隔符的指定输入分隔符的指定n n一般以空格、一般以空格、TABTAB或回车键作为分隔符或回车键作为分隔符n n其它字符做分隔符:格式串中两个格式符间字符其它字符做分隔符:格式串中两个格式符间字符例例 scanf(“%d%o%x”,&a,&b,&c);printf(“a=%d,b=%d,c=%dn”,a,b,c);输入输入 123 123 123 输出输出 a=123,b=83,c=291scanf(“%d:%d:%d”,&h,&m,&s);输入输入 12:30:45 则则12 h,30 m,45 sscanf(“%d,%d”,&a,&b)输入输入 3,4 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入输入 a=12,b=24,c=36 11说明说明n n用用“%“%c”c”格式符时,空格和转义字符作为有效字符输格式符时,空格和转义字符作为有效字符输入入n n输入数据时,遇以下情况认为该数据结束:输入数据时,遇以下情况认为该数据结束:遇空格、遇空格、TABTAB、或回车或回车遇宽度结束遇宽度结束遇非法输入遇非法输入例例 scanf(“%d%d”,&x,&y);若输入若输入123 345 则则123 x,345 yscanf(“%c%c%c”,&c1,&c2,&c3);若输入若输入a a b b c c 则则ac1,c2,b c3scanf(“%d%c%f”,&a,&b,&c);若输入若输入1234a123o.26 则则 1234 a,a b,123 c124.2.2 字符输入函数getchar()格式格式:getchargetchar()()功能:从键盘读功能:从键盘读一个一个字符字符/*ex4-6.c*/#include main()int c;printf(Enter a character:);c=getchar();printf(Enter a character is:%cn“,c);putchar(c);13Getchar 与 getch、getchegetchargetchargetchgetchgetchegetche结束标志结束标志结束标志结束标志回车回车回车回车不不不不不不不不回显输入?回显输入?回显输入?回显输入?要要要要不不不不要要要要/*ex4-7.getchar&getch getche*/#include main()char c1,c2,c3;c1=getchar();c2=getch();c3=getche();printf(n c1=%cn,c1);printf(n c2=%cn,c2);printf(n c3=%cn,c3);getch();abce 输出:c1=a c2=d c3=e不回显 d输入:abc de14/*ex4-8.gets&puts*/#include main()char s20;printf(n Please input string:n);gets(s);printf(string is:%sn,s);printf(string is:n);puts(s);getch();4.2.3 字符串输入函数gets()格式格式:gets(gets()功能:从键盘接收输入功能:从键盘接收输入一个一个字符串字符串 结束结束15