fread fwrite fseek 等总结

原创 2013年12月05日 22:49:13

最近使用fwrite ,fread等函数时对相应参数的理解不是很清楚,特此总结。


fopen(const char * path,const char * mode)

path:要打开文件的路径

mode:(mode部分来自百科的介绍)

r     以只读方式打开文件,该文件必须存在。
r+   以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个,允许读写数据。
rw+ 读写打开一个文本文件,允许读和写。
w    打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+  打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a     以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+   以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb   只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+  读写打开一个二进制文件。允许读或在文件末追加数据。
at+  打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。


例:

fopen("./test.txt","rb+")

//以可读写方式打开一个二进制文件



fseek(FILE *stream, long offset, int mode)

stream: 文件指针

offset: 指针偏移量,注意单位是字节,相对于哪一位置的偏移量与mode的具体指定有关,详细看下面例子

mode: 指明从文件的某处开始 ,有三种形式 1.SEEK_SET(文件头,也可以用0表示)  2.SEEK_CUR(当前指针的位置,可用1表示)   3.SEEK_END(文件尾,可用2表示)


例:

fseek(input.txt,1L,SEEK_END); //将文件指针定位在距离文件尾一个字节处,即文件倒数第二个字节

fseek(input.txt,1L,2);  //与上面的完全一样



fwrite(const void * buffer,size,count,FILE *file)

buffer:对于fwrite来说,是即将要写入数据的地址,注意,file才是指向数据写入指定文件的指针

size:写入的每个数据项的字节数,以字节为单位

count:总的写入的数据项的个数

file:是指向数据写入指定文件的指针,即数据的接收文件(写入位置)的指针,注意与buffer区分


例:

fwrite(data,sizeof(char),sizeof(data),fp)

 //data 是之前定义的字符型数组,即char data[NUM]. 将data数组中存在的数据全部写入fp文件



fread(const void * buffer,size,count,FILE *file)

buffer:对于fread来说,是要读入数据的读入空间的地址,即接收数据的内存地址

size:读入的每个数据项的字节数,以字节为单位,与fwrite相似

count:总的读入的数据项的个数

file:输入流


例:

fread(data,sizeof(char),sizeof(data),fp)

//将fp中指定数量(data数组的大小)的数据读入数组data中



后面若遇到其他函数会进行更新。



转载请注明出处



相关文章推荐

fopen\fread\fwrite\fscanf\fprintf\fseek\feof\rewind\fgets\fputc等系列函数使用总结

函数原型:FILE * fopen(const char * path,const char * mode); 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,...

Linux下文件的相关操作(fopen、fwrite、fread、fseek、ftell)

1、FILE *fopen(char *path,*mode); mode: r:  读打开, 不创建 w: 写打开,创建/清空 a: 写打开, 创建/追加 r+: 读/写打开,不创建 w+:读...

VC中fread,fwrite,fseek,ftell的使用

觉得这个不错,就转载了一下,方便日后用到。。。。 http://blog.sina.com.cn/s/blog_4bf5b1a30100r8of.html  函   数:fread、fwrite ...

c语言中所有文件操作函数详解fopen、fwrite、fread、fgetc、fputc、fscanf、fprintf、ftell、fseek等函数

由于最近经常使用到c语言中的读写文件,所以在此总结以下,方便以后查找.     在c中,文件操作都是由库函数来实现的,主要是分为读和写两种操作,以下详细讲解以下所有有关文件操作的邯郸乎的用法: ...

fseek rewind fopen fclose fread fwrite

fseek c语言指针移动函数 通常文件打开后,读写位置按先后顺序.但有时你想变动读写位置,例如重新从某处起,再读一次. int fseek(FILE *stream, lon...

fread、fwrite和fseek

fread(buffer,size,count,fp);   用来读入一个数据块 fwrite(buffer,size,count,fp); 用来写入一个数据块 参数说明: (1)buffe...

fseek、fread和fwrite

首先这几个函数的使用方法请移步 fseek 点击打开链接 fread点击打开链接 fwrite点击打开链接 进入正题: 在更新一个顺序文件中选定的记录时,我们需要对文件可读又可写,为了保...

fseek fread fwrite fgetc fgets的用法

函数名: fgets   功 能: 从流中读取一字符串   用 法: char *fgets(char *string, int n, FILE *stream); ...
  • gflytu
  • gflytu
  • 2012年06月25日 22:25
  • 1826

fseek fread()和fwrite()函数分析

c语言文件定位:fseek()函数和ftell()函数的使用dev.firnow.com    时间 : 2010-06-28  作者:匿名   编辑:壹枝雪糕 点击:  1519 [ 评论 ]--f...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fread fwrite fseek 等总结
举报原因:
原因补充:

(最多只允许输入30个字)