推荐答案
// www.javascriptcn.com code example
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
perror("Failed to open file");
return 1;
}
// 将文件指针移动到文件末尾
fseek(fp, 0, SEEK_END);
// 获取文件大小
long size = ftell(fp);
printf("File size: %ld bytes\n", size);
// 将文件指针移动到文件开头
fseek(fp, 0, SEEK_SET);
fclose(fp);
return 0;
}本题详细解读
函数原型
int fseek(FILE *stream, long offset, int whence);
参数说明
stream:指向 FILE 对象的指针,该对象标识了一个流。
offset:偏移量,表示从 whence 指定的位置开始移动的字节数。
whence:起始位置,可以是以下三个值之一:
SEEK_SET:文件开头。
SEEK_CUR:当前文件指针位置。
SEEK_END:文件末尾。
返回值
使用场景
- 文件指针定位:
fseek 函数用于将文件指针移动到文件的指定位置。这在需要随机访问文件内容时非常有用。
- 获取文件大小:通过将文件指针移动到文件末尾并使用
ftell 函数,可以获取文件的大小。
- 文件重定位:在读取或写入文件时,可以使用
fseek 重新定位文件指针,以便从特定位置开始操作。
注意事项
- 使用
fseek 时,文件必须以可定位的方式打开(例如,使用 "r" 或 "w+" 模式)。
- 如果文件以追加模式(
"a")打开,fseek 的行为可能会受到限制,因为写入操作总是发生在文件末尾。
- 在二进制文件中,
fseek 可以精确地定位到任意字节位置。在文本文件中,由于换行符的差异,定位可能不精确。