C言語では、ファイルのサイズをどのように判断しますか?
C言語では、fseekとftell関数を使用して、ファイルのサイズを判断することができます。
最初に、ファイルを開くためにfopen関数を使用し、ファイルポインタをファイルの末尾に移動させ、その後ftell関数を使用してファイルポインタの現在位置(つまりファイルサイズ)を取得し、最後にfclose関数を使用してファイルを閉じます。
以下のコードはサンプルです。
#include <stdio.h>
int main() {
FILE *file;
long size;
// 打开文件
file = fopen("test.txt", "rb");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
// 定位到文件末尾
fseek(file, 0, SEEK_END);
// 获取文件大小
size = ftell(file);
printf("文件大小为 %ld 字节\n", size);
// 关闭文件
fclose(file);
return 0;
}
fseek関数の第2引数はオフセットであり、現在位置からのバイト数を表します。この例では、オフセットを0に設定し、現在位置から移動しないことを示します。第3引数のSEEK_ENDはファイルの末尾からオフセットを計算することを示します。
また、ファイルのサイズを取得するにはstat関数を使用することもできます。以下はstat関数を使用したサンプルコードです:
#include <stdio.h>
#include <sys/stat.h>
int main() {
struct stat st;
long size;
// 获取文件状态
if (stat("test.txt", &st) != 0) {
printf("无法获取文件状态\n");
return 1;
}
// 获取文件大小
size = st.st_size;
printf("文件大小为 %ld 字节\n", size);
return 0;
}
この例では、まず、struct stat構造体変数stを定義し、その後、stat関数を使用してファイルの状態を取得し、その結果をstに保存します。最後に、ファイルのサイズを取得するためにst.st_sizeにアクセスできます。この方法には、sys/stat.hヘッダーファイルを含める必要があります。