【C语言】文件位置指针

1、计算机为每个文件保留一个整数,这个整数表示下一次文件读写操作开始的位置(所以每次读取文件读到的是不一样的)

2、这个位置一定在两个相邻字节之间

3、这个整数的数值就是文件头到这个位置之间包含的字节个数

4、这个整数叫做文件的位置指针

5、每当从文件里读N个字节或文件里写入n个字节之后位置指针也会向后移动n个字节

6、fseek函数可以获得位置指针的数值

函数的参数是文件指针,返回值是位置整数

7、rewind函数可以把位置指针调整到位置开头

8、fseek函数可以把位置指针调整到文件任意位置

fseek函数里需要提供一个基准位置和目标位置到基准位置间的距离,计算机根据他们计算出目标位置
SEEK_SET 0 把文件头作为基准位置
SEEK_CUR 1 把当前位置作为基准位置
SEEK_END 2 把文件尾作为基准位置

9、如果目标位置在基准位置后面就用非负数作为距离
如果目标位置在基准位置后面就用负数作为距离

10、距离的绝对值就算是目标位置和基准位置之间包含的字节数

练习:

/*
 * 文件位置指针移位
 * 编写程序从person,,bin中获得所有人id显示在屏幕
 * 只能获得id
 * */
#include <stdio.h>
typedef struct {
    int id;
    float gz;
    char name[10];
}person;
int main() {
    int id = 0, size = 0;
    FILE *p_file = fopen("person.bin", "rb");
    if(p_file) {

        while(1) {
            size = fread(&id, sizeof(int), 1, p_file);
            printf("id是:\n", id);
            fseek(p_file, sizeof(person) - sizeof(int), SEEK_CUR);//,访问所有结构体里某一个成员,计算出需要移动的位置,
            if(size = 0) {
                break;
            }
        }

        fclose(p_file);
        p_file = NULL;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘星燎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值