【C语言】文件位置指针

xiaoxiao2021-02-28  93

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; }
转载请注明原文地址: https://www.6miu.com/read-38131.html

最新回复(0)