c语言fseek偏移量(C语言中,fseek函数中的位移量必须用long型数据吗)

本文目录
C语言中,fseek函数中的位移量必须用long型数据吗
当然不是,他这里用long只是为了能表示的数据范围更大,也就是单次可以偏移的更大,你也可以用int,而且一般都是用int值,毕竟需要大距离偏移的情况不多。
在c语言中,fseek(fp,sizeof(int)*3,0)是什么意思
int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。
如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。
函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。
所以,fseek(fp,sizeof(int)*3,0)函数将文件指针指向从文件开头,向后偏移3个int单元的地方。
fseek中偏移量为什么要加一个L
fseek 函数原型是:
int fseek ( FILE * stream, long int offset, int origin );
参数2 是偏移量, long int 型。
偏移量 为变量名字时,不需要加 一个L,
整常数,可以加 L,表示 long int 型。
其实,不加L,一般编译器也都知道是 long 型。
fseek ( pFile , 9L , SEEK_SET ); 和
fseek ( pFile , 9 , SEEK_SET ); 效果一样。
求助一道C语言问题
int fseek(FILE *stream, long offset, int fromwhere);
其中fromwhere起始点:
起始点名 代表数字 含义
SEEK_SET 0 文件开头
SEEK_CUR 1 文件当前位置
SEEK_END 2 文件末尾
offset 偏移量,表示把与fp有关的文件位置指针放在与起始点相距多少的位置上
当offset为正时,表示从“起始点”开始往文件尾方向移动
为负时,表示从“起始点”开始往文件头方向移动
所以,fseek(fp,10,2)意思是将与fp相关的指针移到文件末尾再向后10比特位处,但是,此时偏移量已经超出文件尾,文件指针是指向文件尾的。最终的结果就是与fp相关的指针移到文件末尾

更多文章:
知名女星孙侨璐于跨年夜,心梗猝死,年仅25岁!一一一写给年轻人?1月2日演员孙侨潞离世,说好的来日方长转眼就是别离
2026年10月15日 10:40
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00








