




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CHAPTE 77.1 Standard Input and Output7.2 Formatted Output-Printf7.3 Variable-length Argument Lists7.4 Formatted Input Scanf7.5 File Access7.6 Error Handling-Stderr and Exit7.6 Line Input and Output7.8 Miscellaneous Functions7.1 Standard Input and Output输入输出函数所谓输入输出是以计算机为主体而言。从计算机向外部输出设备(例如显示器)输出数据称为
2、“输出”,从输入设备(例如键盘)向计算机输入数据称为“输入”。C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。C语言函数库中有一批“标准输入输出函数”,包括:putchar(),getchar(),printf(),scanf(),puts(),gets().在使用c语言函数时,要用到预编译命令“#include”将有关的头文件包括到源文件中;在使用标准输入输出库函数时,要用到”stdio.h”- #include 或#include “stdio.h”字符数据的输入输出putchar函数(字符输出函数)putchar函数的作用是向终端输出一个字符,例如 putchar(c);
3、c可以是字符型变量或整型变量 例子: 例1 输出单个字符#include void main( void ) char a, b, c; a = B; b = O; c = Y; putchar( a ); putchar( b ); putchar( c ); putchar( n ); putchar( 101 ); putchar( ); putchar( x61 ); 程序的运行结果是 BOY Aa字符数据的输入输出getchar()函数 函数的作用是从终端输入一个字符。此函数没有参数,其一般形式为 getchar() 返回下一从标准输入设备上输入的字符的ASCII码,如果到文件末尾则
4、返回EOF。例2 #include /*该预处理命令在tc里不可少*/ void main( void ) char c; c = getchar(); putchar( c );/*putchar(getchar();*/ /*printf(“%c”,getchar();*/ 7.2 Formatted Output-Printfint printf(char *format, arg1, arg2)/* translates internal values to characters*/Ordinary characters 原始字符Conversion specifications 格式
5、说明formatReturns the number of characters printed返回输出字符的数量7.2 Formatted Output-PrintfOrdinary characters : characters which are copied to the output stream; /* 原样输出的字符串*/Conversion specifications: begin with a % and end with a conversion character. /*以%为开始,到转义字符截至*/printf(“this is a interger: %d”,iva
6、l);7.2 Formatted Output-Printfprintf(“The result is: %d,%d”,x,y);Ordinary characters Conversion specificationsConversion specificationsVariables list7.2 Formatted Output-Printf格式字符 对不同类型的数据用不同的格式字符。 有以下几种格式字符d格式符用来输出整数,整数是以十进制的形式出现。有以下几种用法%d,按照整数的实际长度输出。 %md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格;如果大于m,则按照
7、实际位数输出。若a=123,d=12345则: printf(“%4d,%4d”,a,b); 输出: 123,12345 ( 代表空格) %ld,输出长整型数据。如:long a=135790; printf(“%ld”,a);/*若用printf(“%d”,a);可以吗?*/ 输出:135790 对长整型数据也可以制定字段宽度,如printf(“%8ld”,a); 输出: 135790 o格式符以八进制形式输出整数。由于是将内存单元中的各位的值按照八进制形式输出,因此输出的数值不带符号。对长整型,用“%lo”格式,同样可以加字段宽度。如:int a=-1; printf(“%d,%o“,a,
8、a);输出结果为:-1,1777777.2 Formatted Output-Printfx格式符 以十六进制形式输出整数。同样不会出现负的十六进制数。u格式符用来输出unsigned型数据,即无符号数,以十进制形式输出。实际上,一个有符号整数也可以用%u格式输出;反之,一个unsigned也可以用%d、%o、%x格式输出。Int a=-1;printf(“%x,%d,%o”,a,a,a);输出:ffff,-1,177777Main() unsigned int a=65535; int b=-2; printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“a=%d,
9、%o,%x,%un”,b,b,b,b);运行结果:-1,177777,ffff,65535 -2,177776,fffe,655347.2 Formatted Output-Printfc格式符用来输出一个字符。 s格式符用来输出一个字符串。有几种用法%s,按照实际长度输出字符串。 %ms,输出的字符串占m列。如果字符串的长度大于m,则突破m的限制,将字符串全部输出;反之,则左补空格。 %-ms,如果字符串的长度小于m,则在m范围内,字符串向左靠,右补空格。 %m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。 %-m.ns,输出占m列,但只取字符串中左端
10、n个字符。这n个字符输出在m列的左侧,右补空格。如果nm,则m自动取n值,以保证n个字符正常输出。7.2 Formatted Output-Printf:%s:hello, world:%10s:hello, world:%.10s:hello, worl:%-10s:hello, world:%.15s:hello, world:%-15s:hello, world :%15.10s: hello, worl:%-15.10s:hello, worl :7.2 Formatted Output-Printff格式符 用来输出实数,以小数形式输出。有以下几种用法 %f,不指定字段宽度,由系统自
11、动指定,使整数部分全部输出,并输出6位小数。 %m.nf,指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则左补空格。 %-m.nf与%m.nf基本相同,只是输出的数值向左端靠,右端补空格。main() float f=123.456; printf(“%f %10f %10.2f%.2f%-10.2fn”,f,f,f,f,f); 输出如下:123.456001123.456001123.46123.46 123.467.2 Formatted Output-Printfdint; decimal numberoint, unsigned octal number (without
12、a leading 0)x, Xint unsigned hexadecimal numberuint unsigned decimal numbercint single characterschar *; print characters from the string until a 0 or the number of characters given by the precisionfdouble; -m.dddddd, where the number of ds is given by the pricision7.2 Formatted Output-Printfd带有符号的1
13、0进制整型数的输出o8进制无符号整型数的输出x, X16进制无符号整型数的输出u无符号的10进制整型数的输出c单个字符的输出s字符串的输出f以小数形式输出浮点数或双精度数据,含6位小数7.2 Formatted Output-PrintfBetween the % and the conversion(附加格式说明)-specifies left adjustment of the converted argument.mspecified the minimum field width.separates the field width from the precision.nspecifi
14、es the maxim number of character to printed from a string or the digits.ha integer to be printed as a short.l, La integer to be printed as a long.7.2 Formatted Output-PrintfBetween the % and the conversion(附加格式说明)-左对齐m最小输出宽度.分割输出宽度和有效位数.n最大小数位数或允许输出的字符串长度hShort类型数据的输出.l, L用于长整型数据的输出.7.2 Formatted Ou
15、tput-Printf7.4 Formatted Input-Scanfint scanf(char *frm, arg1, arg2 .)each of which must be a pointer7.4 Formatted Input-Scanfscanf(格式控制,地址列表 ); “格式控制”的含义同printf()函数,“地址列表”是由若干地址组成的列表,可以是变量的地址,或字符串的首地址。 Main() int a,b,c; scanf(“%d%d%d”,&a,&b,&c); printf(“%d,%d,%dn”,a,b,c); (1) 在进行数据输入时, “%d%d%d”数据与数
16、据之间可以用一个空格或多个空格,回车键、跳格键tab来分隔。(2)若在“格式控制”中除了格式说明之外,还有其他字符,则数据与输入分隔应该输入相应字符:scanf(“%d,%d”,&a,&b); int day,year;char monthname20;scanf(“%d %s %d”,&day,monthname,&year);格式说明 和printf()函数中的格式说明相似,以%开始,以一个格式字符结束,中间可以插入附加字符。说明 对unsigned型数据,可以用%u、%d、%o和%x格式输入。 可以指定输入数据所占列数,系统自动截取所需数据。 Scanf(“%3c”,&ch); Scan
17、f(“%3d%3d”,&a,&b); %后的“*”附加说明符,用来表示跳过它相应的数据。 Scanf(“%2d %*3d %2d”,&a,&b); 输入数据时,不能规定精度。 例如:scanf(“%7.2f”,&a); 是不合法的输入:abc 结果:a=ch输入:123456 结果:123 =a 456 =b输入:1234567结果:12=a 67=b7.4 Formatted Input-Scanfscanf()函数的执行中应注意的问题scnaf()函数中的“格式控制”后面应当是变量地址,而不应是变量名。 如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入 数据时应输入与这些字
18、符相同的字符。如: Scanf(“%d:%d:%d”,&h,&m,&s); 输入应该用以下形式: 12:23:11 在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。Scanf(“%c%c%c”,&c1,&c2,&c3);abc 则a-c1, -c2,b-c3,正确的方法是abc 在输入数据时,遇到以下几种情况时该数据认为结束 遇到空格、或“回车”或TAB键; 遇到宽度结束; Scanf(“%3d%3d”,&a,&b); 遇到非法输入。7.4 Formatted Input-ScanfScanf(“%d%d”,&a,&b);123 456123 -a, 456-bScanf
19、(“%d%c%f”,&a,&b,&c);1234h123.451234 -a,h -b,123.45 -c7.5 File Access 文件类型指针文件结构体FILE 缓冲文件系统为每个正使用的文件在内存开辟文件信息区文件信息用系统定义的名为FILE的结构体描述FILE定义在stdio.h中typedef struct int _fd; /文件号 int _cleft; /缓冲区中剩下的字符数 int _mode; /文件操作方式 char *_next; /文件当前读写位置 char *_buff; /文件缓冲区位置FILE; FILE f5;7.5 File Access文件类型指针指针
20、变量说明: FILE *fp;用法:文件打开时,系统自动建立文件结构体,并把指向它的指针返回来,程序通过这个指针获得文件信息,访问文件文件关闭后,它的文件结构体被释放文件名文件使用方式文件类型指针C程序操作系统磁盘Open a file: FILE *fopen(char *name, char *mode);File pointer: FILE *fp; /* point to a structure that contain the information about the file*/ name : file name; mode : how to access the opened
21、file; fp=fopen(“c:workx.c”, “r”);7.5 File Access FILE *fp; char *filename=“c:fengyibkctest.dat” fp= fopen(filename,”r”); 例 文件打开与测试 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp=NULL) printf(“File open error!n”); exit(0); “r” open a file for read;“w” open a file for write;“a” open a file for append;“b” acces
22、s a file as binary file;fp=fopen(“c:workx.c”, “w”);fp=fopen(“c:workx.c”, “a”);fp=fopen(“c:workx.c”, “wb”);7.5 File Access 1 If a file that does not exist for w or a, it is create if possible;如果文件不存在,“w”和“a”将创建该文件 2 Opening an existing file for w causes the old contents to be discarded, wile opening for a preserves them. 以“w”打开文件将删除文件原有的内容, “a”则不会3 If try to read a file which not existing or no permission, fopen will return NULL; 如果“r”方式打开的文件不存在,则fopen函数返回NULLIf there is any error,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度企业解雇员工权益保障与再就业协议
- 2025年度货物损失赔偿协议书:货物在海上运输过程中受损赔偿合同
- 二零二五年度小店铺劳动合同与员工社会保险缴纳合同
- 2025年度智能便利店特许经营合同
- 经典诗词意境解析试题及答案
- 2025年健康运动信息测量产品合作协议书
- 跨文化交流中的口语交际技巧教育
- 小班班级的亲子活动安排计划
- 跨文化语言教育的发展及全球影响
- 海洋工程项目的安全风险评估计划
- 实验经济学实验设计案例
- 国际经济法自考真题及答案
- 护理时间管理课件
- 《术前讨论制度》课件
- 商业综合体商业项目立项报告
- 油库消防安全知识培训
- 车辆调度及驾驶员管理办法全套
- 淋巴静脉吻合术后护理课件
- 钣金车间生产流程图
- 地铁保洁服务投标方案
- 先进模具设计与制造技术
评论
0/150
提交评论