fseek函数的查看文件大小
时间: 2023-10-11 08:05:56 浏览: 136
fseek函数本身不能直接用于查看文件大小,它的主要作用是在文件中移动文件指针的位置。要查看文件大小,可以使用C语言中的另一个函数——fseek和ftell的结合使用。
具体的实现方法是:
1. 使用fseek函数将文件指针移动到文件的末尾位置,可以使用fseek(fp, 0, SEEK_END)函数来实现。
2. 使用ftell函数获取文件指针的位置,这个位置就是文件的大小,可以使用size_t size = ftell(fp)函数来获取文件的大小。
3. 将文件指针移动回文件的起始位置,以便后续的读写操作。
完整的代码如下:
```c
#include <stdio.h>
int main()
{
FILE *fp = fopen("test.txt", "rb");
if(fp == NULL)
{
printf("File open failed!\n");
return 0;
}
fseek(fp, 0, SEEK_END);
size_t size = ftell(fp);
fseek(fp, 0, SEEK_SET);
printf("The size of file is %u bytes.\n", size);
fclose(fp);
return 0;
}
```
注:以上代码仅适用于二进制文件和文本文件,对于其他类型的文件,文件大小可能无法精确计算。
相关问题
帮我写一段fseek函数计算文件大小的代码
以下是使用fseek函数计算文件大小的代码:
```
#include <stdio.h>
int main()
{
char filename[] = "example.txt";
FILE *fp = fopen(filename, "rb");
if (fp == NULL) {
printf("Failed to open file: %s\n", filename);
return 1;
}
fseek(fp, 0L, SEEK_END); //将文件指针定位到文件结尾
long int file_size = ftell(fp); //获取文件大小
fclose(fp);
printf("The size of %s is %ld bytes.\n", filename, file_size);
return 0;
}
```
在此代码中,首先我们打开文件 `"example.txt"`,并使用 `"rb"` 模式打开它以读取二进制数据。如果文件打开失败,我们将输出一条错误信息并退出程序。
然后,我们使用 `fseek` 函数将文件指针定位到文件结尾。`fseek` 函数的第一个参数是文件指针,第二个参数是指针移动的偏移量,第三个参数是指定起始点。在这个例子中,第二个参数设置为 0,表示相对于文件结尾偏移量为 0,也就是将文件指针移动到文件结尾。第三个参数设置为 `SEEK_END`,表示起始点为文件结尾。当 `fseek` 函数返回时,文件指针就定位到了文件结尾。
接下来,我们使用 `ftell` 函数获取文件指针的当前位置,也就是文件结尾的位置。这个位置就是文件的大小。
最后,我们输出文件名称和文件大小,并关闭文件。
请注意,在使用 `fseek` 和 `ftell` 函数计算文件大小时,需要使用二进制模式打开文件。因为在文本模式下,有些操作系统可能会自动将某些特殊字符转换为其他字符,这样就会导致文件大小计算错误。因此,为了确保计算的准确性,最好始终使用二进制模式打开文件。
fseek函数读取多个文件
fseek函数主要用于定位文件流的读写位置。它可以用于读取多个文件,以下是一个示例代码:
```c
#include <stdio.h>
int main() {
FILE* file1 = fopen("file1.txt", "r");
FILE* file2 = fopen("file2.txt", "r");
if (file1 == NULL || file2 == NULL) {
printf("Failed to open files.\n");
return 1;
}
fseek(file1, 0, SEEK_END); // 将文件指针移动到文件末尾
long file1Size = ftell(file1); // 获取文件大小
fseek(file2, 0, SEEK_END);
long file2Size = ftell(file2);
printf("Size of file1: %ld bytes\n", file1Size);
printf("Size of file2: %ld bytes\n", file2Size);
fclose(file1);
fclose(file2);
return 0;
}
```
这个示例程序打开了两个文件(file1.txt和file2.txt),并使用fseek函数将文件指针移动到文件末尾,然后使用ftell函数获取文件的大小。最后,程序关闭了文件流。
请注意,这只是一个示例,你可以根据自己的需求进行更改和扩展。同时,务必在使用完文件后关闭文件流,以释放资源。
阅读全文
相关推荐
















