irpas技术客

【C 语言】文件操作 ( fseek 函数 )_韩曙亮_fseek

大大的周 8431

文章目录 一、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 2

long 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.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #fseek #一fseek #函数二fseek #函数代码示例