栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

详解C语言中fseek函数和ftell函数的使用方法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

详解C语言中fseek函数和ftell函数的使用方法

fseek函数:

int fseek(FILE * _File, long _Offset, int _Origin); 

函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败则不改变stream指向的位置,函数返回一个非0值。
超出文件末尾位置,还是返回0。往回偏移超出首位置,还是返回0,小心使用。
第一个参数stream为文件指针。
第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移。
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、SEEK_END或SEEK_SET。
SEEK_SET:文件开头
SEEK_CUR:当前位置
SEEK_END:文件结尾
eg:

#include
#define N 5
typedef struct student{
 long sno;
 char name[10];
 float score[3];
}STU;
 
void fun(char*filename,STU n)
{
 FILE*fp;
 fp=fopen(filename,"rb+");
 fseek(fp,-1L*sizeof(STU),SEEK_END);
 fwrite(&n,sizeof(STU),1,fp);
 fclose(fp);
}
 
int main()
{
 STU t[N]={
  {10001,"MaChao",91,92,77},
  {10002,"CaoKai",75,60,88},
  {10003,"LiSi",85,70,78},
  {10004,"FangFang",90,82,87},
  {10005,"ZhangSan",95,80,88}
 };
  
 STU n={10006,"ZhaoSi",55,70,68},ss[N];
 
 int i,j;FILE*fp;
  
 fp=fopen("student.dat","wb");
  
 fwrite(t,sizeof(STU),N,fp);
  
 fclose(fp);
  
 fp=fopen("student.dat","rb");
  
 fread(ss,sizeof(STU),N,fp);
  
 fclose(fp);
  
 printf("nThe original data:nn");
  
 for(j=0;j

ftell函数
ftell函数用于得到文件位置指针当前位置相对与文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。

long len = ftell(fp) 

eg1:

#include 
int main( void )
{
 FILE *stream;
 stream = fopen( "MYFILE.TXT", "w+" );
 fprintf( stream, "This is a test" );
 printf( "The file pointer is at byte 
%ldn", ftell( stream ) );
 fclose( stream );
 return(0);
}

eg2:
ftell一般用于读取文件的长度,下面补充一个例子,读取文本文件中的内容:

#include 
#include 
int main()
{
 FILE *fp;
 int flen;
 char *p;

 if ( (fp = fopen( "1.txt", "r" ) ) == NULL )
 {
 printf( "nfile open errorn" );
 exit( 0 );
 }
 fseek( fp, 0L, SEEK_END );
 flen = ftell( fp );  
 p = (char *) malloc( flen + 1 ); 
 if ( p == NULL )
 {
 fclose( fp );
 return(0);
 }
 fseek( fp, 0L, SEEK_SET );
 fread( p, flen, 1, fp ); 
 p[flen] = '';      
 printf( "%s", p );
 fclose( fp );
 free( p );
 return(0);
}


程序改进

#include 
main()
{
 FILE *myf;
 long f1; 
 myf = fopen( "1.txt", "rb" );
 fseek( myf, 0, SEEK_END );
 f1 = ftell( myf );
 fclose( myf );
 printf( “ % d  n ”, f1 );
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/64522.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号