文章目录 一、fseek 函数二、fseek 函数代码示例 一、fseek 函数
FILE 文件结构中 , 存在一个指针 , 每次调用文件的读写函数 , 该指针就会移动 ;
如 fgets / fputs , getc / putc , fscanf / fprintf , fread / fwrite 等函数 ;
默认情况下 , 指针是从前向后移动的 ;
该文件内部的指针指向的位置可以通过 fseek 函数进行改变 ;
fseek 函数原型如下 : 重新设置文件内部指针的位置 ;
#include <stdio.h> int fseek(FILE *stream, long offset, int fromwhere);设置的指针的位置是 起始位置 + 偏移量 ;
其中的 int fromwhere 参数就是 起始位置 , 有以下三种选择 :
文件头 SEEK_SET 0当前位置 SEEK_CUR 1文件尾 SEEK_END 2long offset 偏移量参数 , 可以为正数 , 也可以为负数 ;
如果执行成功 , 则返回 0 , 失败返回非 0 , 并设置 error 错误代码 ;
二、fseek 函数代码示例fseek 函数代码示例 : 先写出 10 字节数据 , 然后正常读取前 2 字节 , 最后跳过 4 字节 再读取 2 字节 ;
#include <stdio.h> int main() { // 以写文本的方式向文件中写出数据 FILE *p = fopen("D:/File/number.dat", "w"); // 写出 10 个字符 char array[10] = {1,2,3,4,5,6,7,8,9,10}; // 将 10 个字符写出到文件中 fwrite(array, 1, sizeof(array), p); // 关闭文件 fclose(p); // 正常读取文件前 2 字节 FILE *p1 = fopen("D:/File/number.dat", "r"); // 读取数据缓冲区 char array1[2]; // 读取前 2 字节 fread(array1, 1, sizeof(array1), p1); // 打印前 2 字节数据 printf("%d , %d\n", array1[0], array1[1]); // 跳过 4 字节读取文件 2 字节 FILE *p2 = fopen("D:/File/number.dat", "r"); // 读取数据缓冲区 char array2[2]; // 跳过 4 字节 , 此时当前位置是 0 fseek(p2, 4, SEEK_CUR); // 读取 2 字节 fread(array2, 1, sizeof(array2), p2); // 打印前 2 字节数据 printf("%d , %d", array2[0], array2[1]); return 0; }执行结果 :
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |