在C语言中,fseek
和ftell
是两个用于文件随机访问的函数。它们可以操作文件指针,实现对文件中任意位置的读写操作。
fseek
函数
fseek
函数用于设置文件指针的位置。其原型如下:
int fseek(FILE *stream, long offset, int origin);
其中,stream
为要操作的文件指针,offset
为相对于 origin
的偏移量,origin
表示起始点。origin
可以取以下常量值:
-
SEEK_SET
:从文件开头开始计算偏移量。 -
SEEK_CUR
:从当前位置开始计算偏移量。 -
SEEK_END
:从文件末尾开始计算偏移量。
fseek
函数返回 0 表示定位成功,非零值表示定位失败。
例如,要将文件指针设置到文件末尾,可以使用以下代码:
FILE *file = fopen("example.txt", "r");
if (file != NULL) {
fseek(file, 0L, SEEK_END);
fclose(file);
} else {
// 文件打开失败
}
ftell
函数
ftell
函数用于获取文件指针的当前位置。其原型如下:
long ftell(FILE *stream);
其中,stream
为要获取位置的文件指针。ftell
函数返回当前位置相对于文件起始位置的偏移量,如果出错返回 -1。
例如,要获取文件指针的当前位置,可以使用以下代码:
FILE *file = fopen("example.txt", "r");
if (file != NULL) {
long position = ftell(file);
printf("Current position: %ld\n", position);
fclose(file);
} else {
// 文件打开失败
}
随机访问文件
通过结合使用 fseek
和 ftell
函数,可以在文件中进行随机访问。下面是一个例子,展示如何在文件中定位到指定位置并读取数据:
FILE *file = fopen("example.txt", "r");
if (file != NULL) {
fseek(file, 5L, SEEK_SET); // 将文件指针定位到第6个字节处
char ch = fgetc(file); // 读取第6个字节的字符
printf("Character: %c\n", ch);
fclose(file);
} else {
// 文件打开失败
}
这样,就可以根据自己的需要在文件中进行随机访问,读取或写入特定位置的数据。
总结:fseek
函数用于设置文件指针位置,ftell
函数用于获取文件指针位置。结合使用这两个函数,可以实现在文件中的随机访问。注意,文件必须以适当模式(如 "r+"
或 "w+"
)打开,以便进行读写操作。