计算机中文件操作采用的是流的概念 文件格式:数据在文件中都是以二进制形式存储的。数据必须按照存入的类型读出才能恢复其本来面貌。很多文件都有标准的格式比如bmp,jpg,mp3等等。【函数】1.基本文件操作函数包括 open read write close lseek creat int open(const char *pathname,int access,unsigned mode); pathname——要打开的文件路径或相对路径 access——存取方式 O_RDONLY 只读方式打开 O_WRONLY 只写方式打开 O_RDWR 读写方式打开 O_CREAT 建立新文件 O_TRUNC 文件存在则删除其所有内容再打开 O_EXCL 与O_CREAT联用,当文件存在时返回-1,否则新建文件 O_APPEND 向文件末尾添加 O_TEXT 以文本方式打开,字符串"\r\n"自动转换成"\n"。 O_BINARY 以二进制方式打开,原汁原味的体现文件内容。 mode——文件类型及权限,仅在O_CREAT时有效 返回值——如果文件成功打开则返回文件句柄,否则返回-1 ***与open相似有一个专门进行新建并打开文件的函数 int creat(*path,mode); int read(int handle,void *buf,unsigned len); handle——文件句柄 buf——内存缓冲区 len——试图读入的字节数,不能超过buf的内存大小。 返回值——实际读入的字节数,0表示读到末尾,-1表示出错 int write(int handle,void *buf,unsigned len); handle——文件句柄 buf len——把从buf 开始的len个字节写入文件 返回值——实际写入的字节数。-1表示出错。 **注意:如果返回的值小于len就是说明这次write没有把len个字节写入,下次write时还会继续写入。 int close(int handle); handle——文件句柄 关闭成功返回0 long lseek(int handle,long offset,int fromwhere); 文件定位函数 offset——从formwhere开始,移动位置指针offset个字节,offset为正则向文件末尾移动,为负则向文件头移动。 fromwhere——开始移动时的位置 SEEK_SET——文件头 SEEK_CUR——当前位置 SEEK_END——文件尾 返回值——移动后的指针位置,-1代表出错。 ** lseek(fh,4L,SEEK_CUR) 向后跳过4个字节 lseek(fh,-10L,SEEK_END) 跳到文件倒数第十个字节 lseek(fh,0L,SEEK_CUR) 得到当前位置的指针位置 lseek(fh,0L,SEEK_END) 得到文件长度 2.高级文件操作 (1)打开与关闭 fopen fclose 文件打开方式 r 以只读方式打开 w 以只写方式打开 a 以只写方式打开,位置指针指向文件末尾,源文件数据保留 + 读写方式打开 b 以而二进制方式打开 (2)读写 字符 int fgetc(FILE *fp);//读出 int fputc(int c,FILE *fp);//把c写入文件 字符串 char *fgets(char *s,int n,FILE *fp); 从fp中读入字符串到s中,最多读n-1个字符。当读到回车,换行文件末尾或读满时函数返回。且在字符串末尾添加\0结束符。 int fputs(const char *s,FILE *fp); 将字符串s输出到fp中。返回非负数 (3)格式化读写 int fscanf(FILE *fp,const char *format,....);从fp读入数据到内存 int fprintf(FIle *fp,const char *format,....);从内存中把数据写入fp中 (4)按数据块读写 从fp读数据块到ptr中 unsigned fread(void *ptr,unsigned size,unsigned numemb,FILE *fp); size——每个数据块的大小 nmemb——最多允许读的数据块个数 同理还有 把ptr里的数据写道fp中 unsigned fwrite(const void *ptr,unsigned size,unsigned nmemb,FILE *fp); 返回值——实际读到的数据块个数 (5)文件定位 int fseek(FILE *fp,long offset,int fromwhere); 把fp的文件文件指针从fromwhere开始移动offset个字节,如果成功返回0,否则返回非零。 fromwhere——SEEK_CUR SEEK_END SEEK_SET void fewind(FILE *fp)让fp指向文件首字节 long ftell(FILE *fp)返回当前文件位置指针,-1时出现错误 (6)判断文件是否结束 int feof(FILE *fp) 返回0没有到末尾 (7)无条件的把缓冲区的数据写道物理设备 int fflush(FILE *fp)