【c语言】文件的光标操作 您所在的位置:网站首页 word光标怎么移动到下一行 【c语言】文件的光标操作

【c语言】文件的光标操作

2024-06-28 15:00| 来源: 网络整理| 查看: 265

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦 printf("文件打开成功!\n"); //...操作 fclose(p); p = NULL; } else { printf("文件打开失败!\n"); } system("pause"); return 0; } 一、ftell函数

ftell函数用于获取当前文件指针在文件中的位置(以字节为单位)

可以用于对文件进行重新定位或判断文件大小等操作

在这里插入图片描述

使用:

//获得光标位置 printf("光标位置:%ld\n", ftell(p));

在这里插入图片描述

由此看出:文件光标默认在0处

如何移动文件光标呢?

不难想到 光标会在文件读取时随着读取的位置移动

读取数据:

//获得光标位置 printf("光标位置:%ld\n", ftell(p)); //读取数据 printf("%c\n", fgetc(p)); printf("光标位置:%ld\n", ftell(p)); printf("%c\n", fgetc(p)); printf("%c\n", fgetc(p)); printf("%c\n", fgetc(p)); printf("光标位置:%ld\n", ftell(p));

在这里插入图片描述

光标随着数据的读取也在移动,读取一个T光标位置移动到了1 再读取三个数据,光标位置移动到了4

二、rewind函数

rewind函数可以将文件光标重新定位到文件的开头位置,没有返回值

在这里插入图片描述

在这里插入图片描述

rewind函数会将文件光标重置到文件的开头位置 因此之前读取过的数据就要重新读取 在文件读取时,如果希望回到文件开头重新读取一遍文本内容,可以使用 rewind函数将文件光标重置到开头,再进行读取操作

三、fgetpos函数

在这里插入图片描述 在调用fgetpos函数时,她所需要传入的参数有一个fpos_t类型,这是什么类型呢?

在这里插入图片描述

定义一个fpos_t类型的变量查看一下: 是一个对long long重命名的类型 (重命名typedef知识点:【c语言】typedef详解)

在这里插入图片描述 fpos_t 是一种文件位置类型,可以存储与相应操作系统兼容的任意大小值

使用fgetpos函数获取光标的位置:

在这里插入图片描述

四、fsetpos函数

fsetpos函数用于将文件光标设置为文件流中某个位置

与fgetpos函数类似,fsetpos函数使用了一个fpos_t类型的参数来表示在哪个位置设置文件光标。

在这里插入图片描述 比如:我要设置文件光标为5

在这里插入图片描述

定义一个同类型数据(代表光标位置): const fpos_t wz = 5;

//设置光标位置 const fpos_t wz = 5; fsetpos(p, &wz); printf("%c\n", fgetc(p));

在这里插入图片描述

五、fseek重定位

如果我们想对文件中的内容进行修改,直接fputc不能成功修改,就需要进行重定位操作

文件内容没有被修改成功:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

//修改文件内容 //重定位: fseek(p, 0, SEEK_CUR); fputc('7', p);

重定位到当前位置成功修改:

在这里插入图片描述 使用偏移:

定位到结束位置,偏移-2:向左偏移两位,修改 i

在这里插入图片描述

当使用 SEEK_SET 进行偏移时,将起始位置从文件开头算起 当使用 SEEK_CUR 进行偏移时,则是相对于当前位置的偏移 而使用 SEEK_END 进行偏移时,则会以文件末尾为起点

总结

使用下列文件操作函数,可以在程序中对文件进行读写操作

ftell() 函数用于获取当前文件光标的位置

rewind() 函数用于将文件指针重置到文件开头

fgetpos() 和 fsetpos() 函数用于获取和设置文件当前指针位置,使用了fpos_t类型

fseek() 函数可将文件指针从当前位置向前或向后移动一定数量的字节,进行重定位

文件更多知识:

【c语言】文件的基本概念、操作

【c语言】文本文件的读写操作

在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。 大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有