标准库IO接口
fopen()
FILE * fopen ( const char * path, const char * mode );
功能:打开在参数path中指定名称的文件,并将其与一个流相关联,该流可以在以后的操作中由返回的文件流指针标识。
path:带路径的文件名(如果不带路径,则会在当前目录下创建该文件)
mode:文件打开方式
返回值;成功,返回操作句柄—文件流指针;失败,返回NULL
文件打开方式
控制读写权限的字符串(必须指明) |
---|
打开方式 | 说明 |
---|---|
“r” | 以“只读”方式打开文件。只允许读取,不允许写入。文件必须存在,否则打开失败。 |
“w” | 以“写入”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。 |
“a” | 以“追加”方式打开文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。 |
“r+” | 以“读写”方式打开文件。既可以读取也可以写入,也就是随意更新文件。文件必须存在,否则打开失败。 |
“w+” | 以“写入/更新”方式打开文件,相当于"w"和"r"叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么清空文件内容(相当于删除原文件,再创建一个新文件)。 |
“a+” | 以“追加/更新”方式打开文件,相当于"a"和"r"叠加的效果。既可以读取也可以写入,也就是随意更新文件。如果文件不存在,那么创建一个新文件;如果文件存在,那么将写入的数据追加到文件的末尾(文件原有的内容保留)。 |
控制读写方式的字符串(可以不写) |
---|
“t” | 文本文件。如果不写,默认为"t"。 |
“b” | 二进制文件。 |
整体来说,文件打开方式由 r、w、a、t、b、+ 六个字符拼成,各字符的含义是:
r(read):读
w(write):写
a(append):追加
t(text):文本文件
b(binary):二进制文件
+:读和写
fwrite()
size_t fwrite ( const void * ptr, size_t size, size_t nmemb, FILE * stream );
功能:从ptr指向的内存块向流中的当前位置写入nmemb元素数组,每个元素的大小为size个字节。(实际写入的大小为size*nmemb)
ptr:要写入的数据,
size:块大小;nmemb:块个数
返回值:成功,返回完整写入文件的块个数;失败,返回0
fread()
size_t fread ( void * ptr, size_t size, size_t nmemb, FILE * stream );
功能:从流中读取count元素的数组,每个元素的大小为size个字节,并将它们存储在ptr指定的内存块中。
ptr:传入存放读取到的数据的缓冲区首地址
size:块大小;nmemb:块个数 —size*nmemb就是要读取的总长度
stream:fopen返回的操作句柄—文件流指针
返回值:成功,返回完整读取到的块个数;
失败,返回0;
文件读取到末尾也返回0;(可以通过int feof(FILE* stream)判断是否读取到文件末尾)
建议:块大小设置为1,块个数设置为长度
fseek()
int fseek ( FILE * stream, long offset, int whence);
功能:跳转文件的读写位置
offset:偏移量
whence:偏移的相对起始位置SEEK_SET:文件的起始位置;
SEEK_CUR:当前位置;
SEEK_END:文件的末尾位置。
flclose()
int fclose ( FILE * stream );
功能:关闭与流关联的文件并解除其关联。