首页 > 代码库 > <学习笔记>文件操作篇
<学习笔记>文件操作篇
文件操作用到的函数:
#include <stdio.h>
fopen(FILE* fp):
- 文件打开函数;
- 1、打开成功返回当前文件所处的地址值;2、打开失败返回一个空指针”NULL”;
- 常用方法:if((fp=fopen(“file_name”,”mode”))==NULL)printf(“can not open this file!”);常用此方法打开文件。
mode代表含义:
备注:用带’r‘的方式打开文件时,若文件不存在则返回“NULL”指针。
r
为读打开一个文本文件,若不存在则返回”NULL”
w
为写打开一个文本文件,若不存在则新建该文件
a
为追加打开一个文本文件
rb
同‘r’,但打开为二进制文件
wb
同’w‘,但打开为二进制文件
ab
同‘a‘,但打开为二进制文件
r+
同’r‘,但指针指向文件开始
w+
为读写新建一个文本文件
a+
同‘a‘,但指针指向文件最后
rb+
二进制文件的区别
wb+
二进制文件的区别
ab+
二进制文件的区别
fclose(FILE* fp):
- 文件关闭函数;
- 关闭成功则返回0,关闭失败返回一个非零值;
- 该函数的作用:1>使文件指针fp与文件脱离;2>刷新文件输入/输出缓冲区。
fseek(FILE* fp,int num,from_where):
用于操作已打开文件的位置指针;
一般用于对二进制文件进行操作。操作成功则返回0,失败返回非零;
函数执行成功的结果:文件位置指针从“from_where”处左移或右移“num”个位置。
from_where的含义:
符号常数 数值 含义 SEEK_SET 0 文件的起始位置 SRRK_CUR 1 文件指针的现行位置 SEEK_END 2 文件末尾
int fread(void *buf , int size , int count , FILE* fp):
从当前位置读取count个字段,每个字段长度为size个字节,并把它们存放到buf指针所指的缓冲区中。
int fwrite(void *buf , int size , int count , FILE* fp):
把buf指针所指的缓冲器中,长度为size个字节的count个字段写到fp所指的文件中去。
long ftell(FILE*fp):
返回文件位置指示器的当前值,这个值是指示器从文件开始算起的字节数,返回的数为长整型数,当返回-1时,表明出现错误
int feof(FILE* fp):
判断文件位置指针是否至于文件末尾,若是则返回0,否返回非0。在二进制文件中作用最明显。
int rewind(FILE* fp):
将文件位置指示器移到文件的起点处,成功时返回0,否则返回非0值。
int fflush(FILE *fp):
该函数将输出缓冲区的内容写入文件中,而将输入缓冲区的内容清除掉。
int ferror(FILE* fp):
若上一次文件操作未出错,返回0,否则返回非0。
void clearerr(FILE* fp):
清除一次文件操作的错误。
以上是缓冲文件系统的操作函数,下边简单记录非缓冲文件系统。
缓冲文件系统用文件指针FILE* fp代表一个文件。非缓冲文件系统用一个整数来代表一个文件,该整数称为“文件代号”或“文件句柄”。非缓冲文件操作的函数原型在io.h中声明。
#include <io.h>
1:int open(const char* filename,int mode);
以mode方式打开文件filename,返回文件代号,失败时返回-1.
2:int close(int fd);
关闭文件fd,失败时返回-1,成功时返回0;
3:int creat(const char *filename,int mode);
创建文件。成功返回代号。
4:int read(int fd,void *buf,unsigned count);
从文件fd中取count字节带buf缓冲区,返回实际读得的字节数。
5:int write(int fd,void *buf,unsigned count);
把buf缓冲区的count字节内容写入文件fd中,返回实际写入的字节数。
6:long lseek(int fd,long offset,int origin);
把fd文件的读写位置指针从起点origin开始移动offset字节。返回实际移动的字节。失败时返回-1L。
以上是非缓冲文件系统所使用的函数,下边记录简要说明。
打开方式 说明 O_RDONLY 只读 O_WRONLY 只写 O_RDWR 读写 O_CREAT 创建 O_TEXT 文本文件 O_BINARY 二进制文件
时间挺晚了,就到这里吧,该睡觉了。这两天把眼睛要累坏了╮(╯▽╰)╭…
本文参考书:《C语言高级实例解析》 刘祎玮 汪晓平
<学习笔记>文件操作篇