标准输入输出_第1页
标准输入输出_第2页
标准输入输出_第3页
标准输入输出_第4页
标准输入输出_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

标准输入输出第1页,共16页,2023年,2月20日,星期一11.1标准输入输出的基本操作文件控制结构中包含处理文件所需的全部信息,例如文件名、文件当前的读写位置、用于该文件读写的内存缓冲区位置等。打开文件时,系统会在内存中自动建立该文件的控制结构。关闭文件时,文件控制结构被释放。在对文件进行操作之前,要首先获取文件的指针,即指向文件控制结构的指针,后续操作都通过该指针进行。标准输入输出时,有3个比较特殊的文件,它们是:标准输入文件(stdin):一般为键盘;标准输出文件(stdout):一般为显示器;标准错误输出文件(stderr):一般为显示器。第2页,共16页,2023年,2月20日,星期一11.1.1文件的打开操作文件之前要打开文件,打开文件主要是在系统中分配一些资源用于保存该文件的状态信息,并获取文件的指针,以后调用其它函数对文件进行读写操作时都要提供这个指针。 FILE*fopen(constchar*filename,constchar*modes);第3页,共16页,2023年,2月20日,星期一11.1.2文件的关闭对文件操作完成后,应该关闭文件,进而释放文件所占用的系统资源。文件关闭之后,文件指针将不再有效,用户也就无法通过该指针操作文件。 intfclose(FILE*fp);第4页,共16页,2023年,2月20日,星期一11.1.3缓冲区的刷新刷新操作是指将缓冲区中的数据清除,这项工作可以由fflush或fpurge函数完成。 intfflush(FILE*fp); intfpurge(FILE*fp);第5页,共16页,2023年,2月20日,星期一11.1.4缓冲区属性的设置缓冲区的大小和类型等都可以通过函数来设置,缓冲区的类型有下面三种:全缓冲:缓冲区被填满后才执行输入输出操作,将数据写入到磁盘文件或输出到用户终端;行缓冲:缓冲区中填入换行符时,执行输入输出操作;无缓冲:不对数据进行缓存,标准错误输出stderr一般就是无缓冲的,这可以使错误信息尽快地显示出来。intsetvbuf(FILE*fp,char*buf,intmode,size_tsize);_IOFBF、_IOLBF、_IONBF第6页,共16页,2023年,2月20日,星期一11.2非格式化输入输出非格式化输入输出包括单个字节输入输出、字符串(行)输入输出以及数据块输入输出,下面分别进行介绍。第7页,共16页,2023年,2月20日,星期一11.2.1单个字节输入输出在进行单个字节的输入输出操作时,可以使用fgetc函数和fputc函数。 intfgetc(FILE*fp); intfputc(intc,FILE*fp); intgetchar(); intfgetc(stdin); intputchar(intc); intfputc(c,stdout);第8页,共16页,2023年,2月20日,星期一11.2.1单个字节输入输出rewind函数 voidrewind(FILE*fp);fseek函数 intfseek(FILE*fp,longoffset,intwhence); fseek(fp,0,SEEK_SET); fseek(fp,0,SEEK_END);ftell函数 longftell(FILE*fp);第9页,共16页,2023年,2月20日,星期一11.2.2字符串输入输出对文件的输入输出,除了可以利用fgetc函数和fputc函数以字节为单位进行外,还可以使用fgets函数和fputs函数以字符串(行)为单位进行。 char*fgets(char*s,intn,FILE*fp); intfputs(constchar*s,FILE*fp);第10页,共16页,2023年,2月20日,星期一11.2.3数据块输入输出对文件进行输入输出操作,也可以以数据块为单位进行。所谓数据块,是指一串固定长度的字节,例如一个整型数据、一个结构体,或一个固定长度的数组等。 size_tfread(void*ptr,size_tsize,size_tn,FILE*fp); size_tfwrite(void*ptr,size_tsize,size_tn,FILE*fp);第11页,共16页,2023年,2月20日,星期一11.3格式化输入输出格式化输出的函数 intfprintf(FILE*fp,constchar*format,...);

intprintf(constchar*format,...); intfprintf(stdout,constchar*format,...); %[+/-][0][m.n][l]转换字符第12页,共16页,2023年,2月20日,星期一11.3格式化输入输出1.转换字符2.指定输出精度l3.指定输出长度m.n doublex=0.123; printf("%9.4f\n",x); 0.12304.空位填零0 intx=123; printf("%06d\n",x); 0001235.指定输出位置+字母输出形式示例d十进制整数10o八进制整数12x十六进制整数au无符号十进制整数10c单个字符As字符串ABCe指数形式的浮点数1.230000e-01f小数形式的浮点数0.123000ge和f中较短的一种0.123%百分号本身%charc[]=”ABCD”;printf("%-5.3s\n ",a);printf("%+5.3s\n",a);ABCABC第13页,共16页,2023年,2月20日,星期一11.3格式化输入输出格式化输入的函数 intfscanf(FILE*fp,constchar*format,...);

intscanf(constchar*format,...); intfscanf(stdin,constchar*format,...); scanf("%d%d",&x,&y); scanf("%d,%d",&x,&y); scanf("%10s",s);第14页,共16页,2023年,2月20日,星期一11.4常见面试题常见面试题1:调用fgets函数从文件中读取字符时,函数在满足什么条件时返回?常见面试题2:调用fprintf函数进行格式化输出时,如何指定输出的长度和对齐方式?第15页,共16页,2023年,2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论