1.核心理论
-库函数
基于C函数库的文件编程是独立于具体的操作系统 平台的,不管是在Windows、Linux还是其他的操 作系统中,都是使用这些函数。使用库函数进行程序 设计可提高程序的可移植性
-流
对于标准的C函数库,它们的操作都是围绕流来进行的。 流是一个抽象的概念,当程序需要读取数据的时候,就 会开启一个通向数据源的流,这个数据源可以是文件, 内存,或是网络连接。类似的,当程序需要写入数据 时候,就会开启一个通向目的地的流。这时候你就可以 想象数据好像在这其中“流”动一样。
-文件指针
在系统调用方式实现的文件访问中,使用文件描述 符(一个整数)来指向一个文件。在库函数方式的 文件访问中,使用FILE类型来表示一个打开的文 件,这个类型中包含了管理文件流的信息。这个类型中包含了管理文件流的信息。而指向 该类型的指针FILE* 则被称之为文件指针
2.函数学习-文件操作
打开文件
函数名 : fopen
函数原形:
FILE * fopen(const char * path,const char * mode);
函数功能:打开文件
所属头文件:<stdio.h>
返回值:
文件指针 失败则返回NULL,并把错误代码存在errno 中。
参数说明:
path: 包含欲打开的文件路径及文件名 mode: 字符串则代表着流形态 mode有下列几种形态字符串: r 打开只读文件,该文件必须存在。 r+ 打开可读写的文件,该文件必须存在。 w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。 a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾 a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾
关闭文件
函数名 : fclose
函数原形:
int fclose(FILE * stream)
函数功能:关闭先前fopen()打开的文件
所属头文件:<stdio.h>
返回值:
若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno
参数说明:
读文件
函数名 : fread
函数原形:
size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);
函数功能:
fread()用来从文件流中读取数据
所属头文件:
<stdio.h>
返回值:
返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小, 则代表可能读到了文件尾或有错误发生, 这时必须用feof()或ferror()来决定发生什么情况
参数说明:
stream 为已打开的文件指针, ptr 指向欲存放读取进来的数据空间 size*nmemb 读取的字符数
写文件
函数名 : fwrite
函数原形:
size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);
函数功能:
将数据写入文件流中
所属头文件:
<stdio.h>
返回值:
返回实际写入的nmemb数目
参数说明:
stream 为已打开的文件指针, ptr 指向欲写入的数据地址 size*nmemb 总共写入的字符数
文件定位
函数名 : fseek
函数原形:
int fseek(FILE * stream,long offset,int whence);
函数功能:
移动文件流的读写位置
所属头文件:
<stdio.h>
返回值:
调用成功时则返回0,若有错误则返回-1,errno会存放错误代码
参数说明:
stream 为已打开的文件指针, offset 为根据参数whence来移动读写位置的位移数。 whence 为下列其中一种: SEEK_SET从距文件开头offset位移量为新的读写位置。 SEEK_CUR 以目前的读写位置往后增加offset个位移量。 SEEK_END将读写位置指向文件尾后再增加offset个位移量。 当whence值为SEEK_CUR 或SEEK_END时,参数offset允许负值的出现 下列是较特别的使用方式: 1) 欲将读写位置移动到文件开头时:fseek(FILE *stream,0,SEEK_SET); 2) 欲将读写位置移动到文件尾时:fseek(FILE *stream,0,0SEEK_END);