博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fsetpos() fgetpos()详解
阅读量:6986 次
发布时间:2019-06-27

本文共 1827 字,大约阅读时间需要 6 分钟。

函数原型:int fsetpos(FILE *fp, const fpos_t *pos);

头文件:#include<stdio.h>

是否是标准函数:是

函数功能:将文件指针定位在pos指定的位置上。该函数的功能与前面提到的fgetpos相反,是将文件指针fp按照pos指定的位置在文件中定位。pos值以内部格式存储,仅由fgetpos和fsetpos使用。

返回值:成功返回0,否则返回非0。

例程如下 应用fsetpos函数定位文件指针。

#include <stdio.h>

void main( void )

{

FILE *fp;

fpos_t pos;

char buffer[50];

 

if( (fp = fopen( "test.txt", "rb" )) == NULL )

printf( "Trouble opening file/n" );

else

{

 

pos = 10;

 

if( fsetpos( fp, &pos ) != 0 )

perror( "fsetpos error" );

else

{

 

fread( buffer, sizeof( char ), 16, fp );

 

printf( "16 bytes at byte %ld: %.16s/n", pos, buffer );

}

}

fclose( fp );

}

例程说明:

(1)首先,程序以只读方式打开名为test.txt的文件。在这里,test.txt文件中已存入字符串This is a test for testing the function of fsetpos.

(2)将pos设置为10。应用fsetpos函数将文件指针fp按照pos指定的位置在文件中定位。这样文件指针fp指向字符串中test的字母t。

(3)再从新定位的文件指针开始读取16个字符到buffer缓冲区,也就是说读取字符串"test for testing"到缓冲区buffer。

(4)最后显示结果:16 bytes at byte 10: test for testing 。

函数原型:int fgetpos( FILE *stream, fpos_t *pos );

头文件:#include<stdio.h>

是否是标准函数:是

函数功能:取得当前文件的指针所指的位置,并把该指针所指的位置数存放到pos所指的对象中。pos值以内部格式存储,仅由fgetpos和fsetpos使用。其中fsetpos的功能与fgetpos相反,为了详细介绍,将在后节给与说明。

返回值:成功返回0,失败返回非0,并设置errno。

例程如下:应用fgetpos函数取得当前文件的指针所指的位置。

#include <string.h>

#include <stdio.h>

int main(void)

{

FILE *fp;

char string[] = "This is a test";

fpos_t pos;

 

fp = fopen("test.txt", "w+");

 

fwrite(string, strlen(string), 1, fp);

 

fgetpos(fp, &pos);

printf("The file pointer is at byte %ld/n", pos);

 

fseek(fp,3,0);

 

fgetpos(fp, &pos);

printf("The file pointer is at byte %ld/n", pos);

fclose(fp);

return 0;

}

例程说明:

(1)首先,程序以读写方式打开一个名为test.txt的文件,并把字符串"This is a test"写入文件。注意:字符串共14个字节,地址为0~13。用fwrite函数写入后,文件指针自动指向文件最后一个字节的下一个位置。即这时的fp的值应该是14。

(2)再用fgetpos函数取得指针位置并存入&pos所指向的对象,此时, pos中的内容为14。然后在屏幕上显示出The file pointer is at byte 14。

(3)再用fseek函数重设文件指针的位置,让fp的值为3,即指向文件中第4个字节。

再次取得指针位置并存入&pos所指向的对象。然后在屏幕上显示出The file pointer is at byte 3。

转载地址:http://pjmpl.baihongyu.com/

你可能感兴趣的文章
新书推荐:细说PHP(含样章试读)
查看>>
《黑客防线》2010合订本(下半年)
查看>>
intel I7平台Win7 x64 下wpf、silverlight 与aero特效动画缓慢故障排除一则
查看>>
shell常识总结
查看>>
内存池版本1--单线程-固定大小专为某类设计的内存池
查看>>
大道至简,职场上做人做事做管理
查看>>
《C++必知必会》读书笔记2
查看>>
web 学习资源整理
查看>>
make 参数定义
查看>>
数组排序(冒泡和快速)
查看>>
java从字符串中提取数字
查看>>
Cardinality Feedback
查看>>
Android App Build System
查看>>
Python yield与实现
查看>>
终端中的乐趣:6个有趣的Linux命令行工具
查看>>
【技术贴】TOMCAT,Mysql提示Unknown column 'content' in 'fi
查看>>
EBS xml publisher中文乱码
查看>>
ext-anychart饼图呈现取自数据库中的数据
查看>>
Android深入浅出系列之服务机制—1.Android中的Service
查看>>
zz:彻底解决兼容性问题:Windows 7下载安装 Visual C++ 6.0(VC6)
查看>>