《标准输入输出精选PPT.ppt》由会员分享,可在线阅读,更多相关《标准输入输出精选PPT.ppt(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、标准准输入入输出出第1页,此课件共16页哦11.1 11.1 标准输入输出的基本操作标准输入输出的基本操作文件控制结构中包含处理文件所需的全部信息,例如文件名、文件控制结构中包含处理文件所需的全部信息,例如文件名、文件当前的读写位置、用于该文件读写的内存缓冲区位置文件当前的读写位置、用于该文件读写的内存缓冲区位置等。打开文件时,系统会在内存中自动建立该文件的控制等。打开文件时,系统会在内存中自动建立该文件的控制结构。关闭文件时,文件控制结构被释放。在对文件进行结构。关闭文件时,文件控制结构被释放。在对文件进行操作之前,操作之前,要首先获取文件的指针,即指向文件控制结构要首先获取文件的指针,即指
2、向文件控制结构的指针,后续操作都通过该指针进行。的指针,后续操作都通过该指针进行。标准输入输出时,有标准输入输出时,有3个比较特殊的文件,它们是:个比较特殊的文件,它们是:标准输入文件(标准输入文件(stdin):一般为键盘;):一般为键盘;标准输出文件(标准输出文件(stdout):一般为显示器;):一般为显示器;标准错误输出文件(标准错误输出文件(stderr):一般为显示器。):一般为显示器。第2页,此课件共16页哦11.1.1 11.1.1 文件的打开文件的打开操作文件之前要打开文件,打开文件主要是在系统中分配一操作文件之前要打开文件,打开文件主要是在系统中分配一些资源用于保存该文件的
3、状态信息,并获取文件的指针,些资源用于保存该文件的状态信息,并获取文件的指针,以后调用其它函数对文件进行读写操作时都要提供这个指以后调用其它函数对文件进行读写操作时都要提供这个指针。针。FILE*fopen(const char*filename,const char*modes);第3页,此课件共16页哦11.1.2 11.1.2 文件的关闭文件的关闭对文件操作完成后,应该关闭文件,进而释放文件所占用的对文件操作完成后,应该关闭文件,进而释放文件所占用的系统资源。文件关闭之后,文件指针将不再有效,用户也系统资源。文件关闭之后,文件指针将不再有效,用户也就无法通过该指针操作文件。就无法通过该指
4、针操作文件。int fclose(FILE*fp);第4页,此课件共16页哦11.1.3 11.1.3 缓冲区的刷新缓冲区的刷新刷新操作是指将缓冲区中的数据清除,这项工作可以由刷新操作是指将缓冲区中的数据清除,这项工作可以由fflush或或fpurge函数完成。函数完成。int fflush(FILE*fp);int fpurge(FILE*fp);第5页,此课件共16页哦11.1.4 11.1.4 缓冲区属性的设置缓冲区属性的设置缓冲区的大小和类型等都可以通过函数来设置,缓冲区的类缓冲区的大小和类型等都可以通过函数来设置,缓冲区的类型有下面三种:型有下面三种:全缓冲:缓冲区被填满后才执行输入
5、输出操作,将数据全缓冲:缓冲区被填满后才执行输入输出操作,将数据写入到磁盘文件或输出到用户终端;写入到磁盘文件或输出到用户终端;行缓冲:缓冲区中填入换行符时,执行输入输出操作;行缓冲:缓冲区中填入换行符时,执行输入输出操作;无缓冲:不对数据进行缓存,标准错误输出无缓冲:不对数据进行缓存,标准错误输出stderr一般就一般就是无缓冲的,这可以使错误信息尽快地显示出来。是无缓冲的,这可以使错误信息尽快地显示出来。int setvbuf(FILE*fp,char*buf,int mode,size_t size);_IOFBF、_IOLBF、_IONBF 第6页,此课件共16页哦11.2 11.2
6、非格式化输入输出非格式化输入输出非格式化输入输出包括单个字节输入输出、字符串(行)输非格式化输入输出包括单个字节输入输出、字符串(行)输入输出以及数据块输入输出,下面分别进行介绍。入输出以及数据块输入输出,下面分别进行介绍。第7页,此课件共16页哦11.2.1 11.2.1 单个字节输入输出单个字节输入输出在进行单个字节的输入输出操作时,可以使用在进行单个字节的输入输出操作时,可以使用fgetc函数和函数和fputc函数。函数。int fgetc(FILE*fp);int fputc(int c,FILE*fp);int getchar();int fgetc(stdin);int putch
7、ar(int c);int fputc(c,stdout);第8页,此课件共16页哦11.2.1 11.2.1 单个字节输入输出单个字节输入输出rewind函数函数 void rewind(FILE*fp);fseek函数函数 int fseek(FILE*fp,long offset,int whence);fseek(fp,0,SEEK_SET);fseek(fp,0,SEEK_END);ftell函数函数 long ftell(FILE*fp);第9页,此课件共16页哦11.2.2 11.2.2 字符串输入输出字符串输入输出对文件的输入输出,除了可以利用对文件的输入输出,除了可以利用fg
8、etc函数和函数和fputc函数以函数以字节为单位进行外,还可以使用字节为单位进行外,还可以使用fgets函数和函数和fputs函数以函数以字符串(行)为单位进行。字符串(行)为单位进行。char*fgets(char*s,int n,FILE*fp);int fputs(const char*s,FILE*fp);第10页,此课件共16页哦11.2.3 11.2.3 数据块输入输出数据块输入输出对文件进行输入输出操作,也可以以数据块为单位进行。所对文件进行输入输出操作,也可以以数据块为单位进行。所谓数据块,是指一串固定长度的字节,例如一个整型数据、谓数据块,是指一串固定长度的字节,例如一个整
9、型数据、一个结构体,或一个固定长度的数组等。一个结构体,或一个固定长度的数组等。size_t fread(void*ptr,size_t size,size_t n,FILE*fp);size_t fwrite(void*ptr,size_t size,size_t n,FILE*fp);第11页,此课件共16页哦11.3 11.3 格式化输入输出格式化输入输出格式化输出的函数格式化输出的函数int fprintf(FILE*fp,const char*format,.);int printf(const char*format,.);int fprintf(stdout,const char
10、*format,.);%+/-0 m.n l 转换字符转换字符第12页,此课件共16页哦11.3 11.3 格式化输入输出格式化输入输出1转换字符转换字符2指定输出精度指定输出精度 l3指定输出长度指定输出长度 m.ndouble x=0.123;printf(%9.4fn,x);0.12304空位填零空位填零 0 int x=123;printf(%06dn,x);0001235指定输出位置指定输出位置+字母输出形式示例d十进制整数10o八进制整数12x十六进制整数au无符号十进制整数10c单个字符As字符串ABCe指数形式的浮点数1.230000e-01f小数形式的浮点数0.123000g
11、e和f中较短的一种0.123%百分号本身%char c=”ABCD”;printf(%-5.3sn,a);printf(%+5.3sn,a);ABC ABC第13页,此课件共16页哦11.3 11.3 格式化输入输出格式化输入输出格式化输格式化输入入的函数的函数int fscanf(FILE*fp,const char*format,.);int scanf(const char*format,.);int fscanf(stdin,const char*format,.);scanf(%d%d,&x,&y);scanf(%d,%d,&x,&y);scanf(%10s,s);第14页,此课件共
12、16页哦11.4 11.4 常见面试题常见面试题常见面试题常见面试题1:调用:调用fgets函数从文件中读取字符时,函数在函数从文件中读取字符时,函数在满足什么条件时返回?满足什么条件时返回?常见面试题常见面试题2:调用:调用fprintf函数进行格式化输出时,如何指函数进行格式化输出时,如何指定输出的长度和对齐方式?定输出的长度和对齐方式?第15页,此课件共16页哦11.5 11.5 小结小结这一章详细地介绍了标准输入输出的相关知识及具体的函数。这一章详细地介绍了标准输入输出的相关知识及具体的函数。这些函数都是基于标准输入输出库实现的,他们不仅可以这些函数都是基于标准输入输出库实现的,他们不仅可以应用于应用于Linux系统中,也可以用于其它的操作系统。而基系统中,也可以用于其它的操作系统。而基于文件系统的输入输出与操作系统有很大关系,不能应用于文件系统的输入输出与操作系统有很大关系,不能应用于其它系统。于其它系统。第16页,此课件共16页哦