推荐答案
// www.javascriptcn.com code example
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
perror("Error opening file");
return 1;
}
// 移动文件指针到文件末尾
fseek(fp, 0, SEEK_END);
// 获取当前文件指针的位置
long size = ftell(fp);
printf("File size: %ld bytes\n", size);
fclose(fp);
return 0;
}本题详细解读
1. ftell 函数的基本用法
ftell 函数用于获取文件指针的当前位置。它的原型如下:
long ftell(FILE *stream);
- 参数:
stream是一个指向FILE对象的指针,通常是通过fopen打开的文件。 - 返回值:返回当前文件指针的位置,通常是从文件开头开始的字节数。如果发生错误,返回
-1L。
2. 使用场景
ftell 通常与 fseek 一起使用,用于获取文件的大小或定位文件指针的位置。例如,在读取文件时,你可能需要知道文件的大小,或者在文件中跳转到某个特定的位置。
3. 示例代码解析
- 打开文件:使用
fopen打开一个文件,并检查是否成功打开。 - 移动文件指针:使用
fseek将文件指针移动到文件末尾。 - 获取文件大小:使用
ftell获取当前文件指针的位置,即文件的大小。 - 关闭文件:使用
fclose关闭文件。
4. 注意事项
- 在使用
ftell之前,确保文件指针已经正确打开,并且文件指针的位置是你所期望的。 ftell返回的值是相对于文件开头的字节偏移量,因此在计算文件大小时,通常需要先将文件指针移动到文件末尾。- 如果文件是以二进制模式打开的,
ftell返回的值可以直接用于fseek来重新定位文件指针。