ftell函数和rwind函数详解

网友投稿 810 2022-05-28

大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

掘金LV3用户 https://juejin.cn/user/1381426159953960

阿里云社区专家博主,星级博主,技术博主 https://developer.aliyun.com/profile/expert/5lkdbuggiiuhc

ftell函数和rwind函数详解

华为云云享专家 https://bbs.huaweicloud.com/community/myhomepage

使用上方的fseek为例子

int main() { //打开文件 FILE* pf = fopen("test.txt","r"); if(NULL == pf) { perror("fopen"); return -1; } //读文件 //随机读写 //如果想要第一次读取就读到字符c fseek(pf,2,SEEK_SET); //定位文件指针的位置,c相对于字符a,偏移量为2 char ch = fgetc(pf); printf("%c\n",ch);//c //读取字符之后,文件指针向后偏移,指向d //此时文件指针指向d,相对于起始位置a的偏移量为3 printf("%d\n",ftell(pf)); //3 //假设现在想读取字符b fseek(pf,-2,SEEK_CUR);//字符b相对于字符d,偏移量为-2 ch = fgetc(pf); printf("%c\n",ch);//b //读完b之后,文件指针向后偏移,指向c //此时文件指针指向c,相对于起始位置a的偏移量为2 printf("%d\n",ftell(pf)); //2 //3.关闭文件 fclose(pf); pf = NULL; return 0; }

例子1

int main() { //打开文件 FILE* pf = fopen("test.txt","r"); if(NULL == pf) { perror("fopen"); return -1; } //读文件 //假设想读e fseek(pf,4,SEEK_SET); //e相对于a的偏移量为4 char ch = fgetc(pf); printf("%c\n",ch);//e //让文件指针回到最初位置->即指向a rewind(pf); ch = fgetc(pf); printf("%c\n",ch);//a //关闭文件 fclose(pf); pf = NULL; return 0; }

11.文本文件和二进制文件

概念

根据数据的组织形式,数据文件被称为文本文件或者二进制文件。 数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。

如何存储

如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。 一个数据在内存中是怎么存储的呢? 字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。 如有整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节),而二进制形式输出,则在磁盘上只占4个字节(VS2013测试)。

例子:整数10000以ASCII存储和以二进制形式存储

以ascii码形式存储时,占用5个字节(因为每一个数都占一个字节),而用二进制形式存储时,占用4个字节(整形)

验证:把10000写到文件中再读取出来

int main() { //打开文件 FILE* pf = fopen("data.txt","wb");//以二进制形式写入打开 if(NULL == pf) { perror("fopen"); return -1; } //以二进制形式写文件,把10000以二进制形式写到文件中 int a =10000; fwrite(&a,sizeof(int),1,pf); //第一个参数:要写入数据的地址 //第二个参数:要写入数据的每一个的大小 //第三个参数:要写入多少个数据 //第四个参数:文件指针 //关闭文件 fclose(pf); pf = NULL; return 0; }

执行后data.txt的结果

看不懂

开发者

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Volume
下一篇:C语言基本文件编程操作(读写)
相关文章