cpp
#include <stdio.h>
int fseek(FILE *stream, long offset, int whence);
参数:第一个为文件指针,第二个是指针的偏移量,第三个是指针偏移的起始位置
返回值:重定位成功返回0,否则返回非零值
重定位的主要目的:该函数不是重定位文件指针,而是重定位文件内部的指针,让指向文件内部数据的指针移动到文件中我们感兴趣的数据上,则保留原来的stream的位置不变
分别用到三个宏
SEEK_SET 既0: 文件开头
SEEK_CUR 既1:文件当前位置
SEEK_END 既2:文件结尾
cpp
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
int nRet = 0;
char readBuff[12];
memset(readBuff,0,12);
char *writeBuff = "helloworld";
fp = fopen("mm","r+");
if(fp == NULL){
printf("open failed \n");
return -1;
}
printf("open success !\n");
nRet = fread(readBuff,4,2,fp);
if(nRet <= 0){
printf("read file failed \n");
return -2;
}
printf("read %s \n",readBuff);
nRet = fseek(fp,1,SEEK_SET);
if(nRet){
printf("fseek file failed !\n");
return -4;
}
printf("fseek success !\n");
nRet = fwrite(writeBuff,4,1,fp);
if(nRet <=0){
printf("fwrite failed \n ");
return -3;
}
printf("fwrite success !\n");
fclose(fp);
}