如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
一、文件I/O操作部分:C标准I/O库函数UnbufferedI/O函数fopenopenfdopencreatfcloseclosefseeklseekfreadreadfwritewrite知识小结:1.C标准I/O库函数1.1文件的创建,打开与关闭原型为:#include<stdio.h>FILE*fopen(constchar*pach,constchar*mode);FILE*fdopen(intfd,constchar*mode);intfclose(FILE*stream);fopen以mode的方式打开或创建文件,如果成功,将返回一个文件指针,失败则返回NULL.fopen创建的文件的访问权限将以0666与当前的umask结合来确定。mode的可选模式列表模式读写位置截断原内容创建rbYN文件头NNr+bYY文件头NNwbNY文件头YYw+bYY文件头YYabNY文件尾NYa+bYY文件尾NY在Linux系统中,mode里面的’b’(二进制)可以去掉,但是为了保持与其他系统的兼容性,建议不要去掉。ab和a+b为追加模式,在此两种模式下,无论文件读写点定位到何处,在写数据时都将是在文件末尾添加,所以比较适合于多进程写同一个文件的情况下保证数据的完整性。fdopen根据已经打开的文件描述符打开一文件指针,对同一个文件既打开文件描述符又打开文件指针,将容易出现问题,但是在多进程程序中,往往需要传递文件描述符,所以此类混合文件操作必须掌握。1.2读写文件基于文件指针的数据读写函数较多,可分为如下几组:数据块读写:#include<stdio.h>size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);size_tfwrite(void*ptr,size_tsize,size_tnmemb,FILE*stream);fread从文件流stream中读取nmemb个元素,写到ptr指向的内存中,每个元素的大小为size个字节.fwrite从ptr指向的内存中读取nmemb个元素,写到文件中,每个元素size个字节。所有的文件读写函数都从文件的当前读写点开始读写,读写完以后,当前读写点自动往后移动size*nmemb个字节。1.3文件定位:文件定位指读取或设置文件当前读写点,所有的通过文件指针读写数据的函数,都是从文件的当前读写点读写数据的。常用的函数有:#include<stdio.h>intfseek(FILE*stream,longoffset,intwhence);longftell(FILE*stream);voidrewind(FILE*stream);fseek设置当前读写点到offset处,whence可以是SEEK_SET,SEEK_CUR,SEEK_END,这些值决定是从文件头、当前点和文件尾计算偏移量offset.ftell获取当前的读写点rewind将文件当前读写点移动到文件头01.4目录操作获取目录信息:原型为:#include<sys/types.h>#include<dirent.h>DIR*opendir(constchar*name);//打开一个目录structdirent*readdir(DIR*dir);//读取目录的一项信息,并返回该项信息的结构体指针voidrewinddir(DIR*dir);//重新定位到目录文件的头部intclosedir(DIR*dir);//关闭目录文件读取目录信息的步骤为:1>用opendir函数打开目录;2>使用readdir函数迭代读取目录的内容,如果已经读取到目录末尾,又想重新开始读,则可以使用rewinddiw函数将文件指针重新定位到目录文件的起始位置;3>用closedir函数关闭目录1.5.标准输入/输出流在进程一开始运行,就自动打开了三个对应设备的文件,它们是标准输入、输出、错误流,分别用全局文件指针stdin、stdout、stderr表示,stdin具有可读属性,缺省情况下是指从键盘的读取输入,stdout和stderr具有可写属性,缺省情况下是指向屏幕输入数据。2.UnbufferedI/O函数2.1.打开、创建和关闭文件open和creat都能打开和创建函数,原型为#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>intopen(constchar*pathname,intflags);intopen(constchar*pa