【C语言】文件位置指针 向右看齐 2022-06-10 00:12 223阅读 0赞 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; }
还没有评论,来说两句吧...