使用FILE文件指针进行文件的操作相关函数
2012-04-10 11:45
441 查看
VC中stdio.h中FILE结构定义:
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
1. fopen:打开一个文件
第二个函数mode表示打开方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
2. fclose:关闭打开的文件流
使用fclose函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。
如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。
如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。
3. fread: 从一个文件流中读数据
函数原型::size_t fread(void*buffer,size_tsize,size_tcount,FILE*stream);
参 数:
(1) 用于接收数据的地址(指针)(buffer)
(2) 单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据就是4个字节
(3) 元素个数(count)
(4) 提供数据的文件指针(stream)
返回值:读取的元素的个数
4. fwrite:向文件写入数据
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
函数原型::size_t fwrite(const void* buffer,size_t size,size_t count,FILE* stream);
参数:
(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针。
(5)返回实际写入的数据项个数count
5. ftell,_ftelli64:返回文件的游标位置:
用于得到文件位置指针当前位置相对于文件首的偏移字节数。
6. fseek,_fseeki64: 重定位文件流上的文件内部位置指针
注意:不是定位文件指针,文件指针指向文件/流。
位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。
函数原型::int fseek(FILE *stream, long offset, int fromwhere);
参数:
(1)FILE *:文件流;
(2)offset:指针偏移量;
(3)fromwhere:偏移起始位置:
SEEK_SET(0): 文件开头
SEEK_CUR(1): 当前位置
SEEK_END(2): 文件结尾
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
1. fopen:打开一个文件
第二个函数mode表示打开方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
2. fclose:关闭打开的文件流
使用fclose函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。
如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。
如果流为NULL,而且程序可以继续执行,fclose设定error number给EINVAL,并返回EOF。
3. fread: 从一个文件流中读数据
函数原型::size_t fread(void*buffer,size_tsize,size_tcount,FILE*stream);
参 数:
(1) 用于接收数据的地址(指针)(buffer)
(2) 单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据就是4个字节
(3) 元素个数(count)
(4) 提供数据的文件指针(stream)
返回值:读取的元素的个数
4. fwrite:向文件写入数据
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
函数原型::size_t fwrite(const void* buffer,size_t size,size_t count,FILE* stream);
参数:
(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址。
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针。
(5)返回实际写入的数据项个数count
5. ftell,_ftelli64:返回文件的游标位置:
用于得到文件位置指针当前位置相对于文件首的偏移字节数。
6. fseek,_fseeki64: 重定位文件流上的文件内部位置指针
注意:不是定位文件指针,文件指针指向文件/流。
位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。
函数原型::int fseek(FILE *stream, long offset, int fromwhere);
参数:
(1)FILE *:文件流;
(2)offset:指针偏移量;
(3)fromwhere:偏移起始位置:
SEEK_SET(0): 文件开头
SEEK_CUR(1): 当前位置
SEEK_END(2): 文件结尾
相关文章推荐
- linux下文件的读写操作、字符串的处理操作,多线程操作等相关函数使用说明
- c#中使用api(shfileoperation)进行文件操作,特别详解了回收站相关参数
- C#中使用API(SHFileOperation)进行文件操作,特别说明了回收站相关参数
- PHP中对已打开文件资源进行操作的相关函数
- 黑马程序员_java初操作使用FileReader及FileWriter进行文件复制
- 关于C#和ASP.NET中对App.config和Web.config文件里的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作
- 3.QT中的debug相关的函数,以及文件锁的使用
- jq 数组操作、事件处理和相关处理函数的使用
- 文件操作函数的使用和区别
- 如何使用ANT自动进行数据库的相关操作
- C#文件、目录操作相关函数
- 递归遍历一个文件夹,对文件进行操作,使用lstat时的悲剧
- 9.7Python文件操作(7):使用pickle进行二进制IO
- 使用PHP进行压缩/解压缩文件操作技巧汇总
- python使用codecs模块进行文件操作-读写中英文字符
- PHP操作文件和目录的相关函数
- 在Dreamweaver下创建一个php文件并用正确使用php“绘图函数”进行绘制图形时,图形却无法显示
- PHP文件常用操作相关函数
- 使用POI包进行Excel文件操作(2)
- Android中使用SharedPreferences进行数据存储及文件操作模式