fseek 和fread、fwrite
#include"stdio.h"
fseek(文件类型指针fp,位移量,起始点);
函数功能:把与fp有关的文件位置指针放到一个指定位置其中,“位移量”是long型数据,它表示位置指针相对于“起始点”移动的字节数。如果位移量是一个正数,表示从“起始点”开始往文件尾方向移动;如果位移量是一个负数,则表示从“起始点”开始往文件头方向移动。
起始点”不能任意设定,它只能是在stdio.h中定义的三个符号常量之一:
:
起始点 |
对应的数字 |
代表的文件位置 |
SEEK_SET |
0 |
文件开头 |
SEEK_CUR |
1 |
文件当前位置 |
SEEK_END |
2 |
文件末尾 |
例如:
fseek(fp,50L,0);或fseek(fp,50L,SEEK_SET);
其作用是将位置指针移到离文件头50个字节处。
|
ftell
调用形式:
#include"stdio.h" long ftell(fp); |
函数功能:得到流式文件中的当前位置,其返回值是当前位置相对于文件开头的字节数。
返回值:出错时返回-1L。
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
buffer 是读取的数据存放的内存的指针
size 是每次读取的字节数
count 是读取次数
strean 是要读取的文件的指针
例如 从文件fp里读取100个字节 可用以下语句
fread(buff,100,1,fp)
fread(buff,50,2,fp)
fread(buff,1,100,fp)
如果想实现从某个文件中一次次N个字节般读出来,那建议不要用
read = fread(buff,N,1,data_file);
因为就算当文件的字节数比N大,但这时strlen(buff)绝不是N个字节大小!!也不是read个字节大小!!
查帮助文档,可知,read是指成功读入的单元块数,这里对应的就是,read要么是1,要么是0(由第三个参数决
定)!