C语言fseek():移动文件内部位置指针
fseek() 是 C语言的一个标准库函数,定义在
fseek() 用于设置文件内部的位置指针,即改变文件中的读/写位置。fseek() 函数的原型如下:
例如,把位置指针移动到离文件开头 100 个字节处:
【实例】以下是使用 C语言 fseek() 函数在文件中跳转到特定位置并读取数据的示例代码:
请注意,这个示例假设您知道要跳转到的位置。在实际应用中,可能需要更复杂的逻辑来确定文件中的正确位置,特别是当您在处理结构化数据(如记录或对象)时。
<stdio.h>
头文件中。fseek() 用于设置文件内部的位置指针,即改变文件中的读/写位置。fseek() 函数的原型如下:
int fseek(FILE *stream, long offset, int whence);
参数
- stream:文件指针,也就是被移动的文件。
- offset:偏移量,也就是要移动的字节数。之所以为 long 类型,是希望移动的范围更大,能处理的文件更大。offset 为正时,向后移动;offset 为负时,向前移动。
-
whence:起始位置,也就是从何处开始计算偏移量,C语言规定的起始位置有三种,每个位置都用对应的常量来表示:
- SEEK_SET:从文件开头,对应的常量值为 0;
- SEEK_CUR:从文件的当前位置,对应的常量值为 1。
- SEEK_END:从文件末尾,对应的常量值为 2。
例如,把位置指针移动到离文件开头 100 个字节处:
fseek(fp, 100, SEEK_SET); fseek(fp, 100, 0);以上两种写法是等价的。
返回值
成功时,fseek() 返回 0;失败时,fseek() 返回非零值,并设置全局错误指示器 errno。【实例】以下是使用 C语言 fseek() 函数在文件中跳转到特定位置并读取数据的示例代码:
#include <stdio.h> int main() { FILE *file = fopen("example.bin", "rb"); if (file == NULL) { printf("Error opening file!\n"); return 1; } // 跳转到文件的第10个字节处 if (fseek(file, 9, SEEK_SET) != 0) { printf("Error seeking in file!\n"); return 2; } // 读取一个字符 char ch; fread(&ch, 1, 1, file); printf("Character read from file: %c\n", ch); fclose(file); return 0; }这个代码打开一个名为"example.bin"的文件并跳转到第 10 个字节,然后读取一个字符并打印它。如果文件打开或定位失败,则打印错误消息并返回非零退出代码。
请注意,这个示例假设您知道要跳转到的位置。在实际应用中,可能需要更复杂的逻辑来确定文件中的正确位置,特别是当您在处理结构化数据(如记录或对象)时。