任意のファイルのサイズを求めるプログラム

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、C 言語を使って任意のファイルのサイズを求める方法を学びます。ファイルのサイズを求めるために、fseek() 関数と ftell() 関数を使います。

注: コーディングを練習し、gcc を使ってコンパイルして実行する方法を学ぶには、自分で ~/project/main.c ファイルを作成する必要があります。

cd ~/project
## main.c を作成する
touch main.c
## main.c をコンパイルする
gcc main.c -o main
## main を実行する
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/if_else("If...Else") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FileHandlingGroup -.-> c/write_to_files("Write To Files") c/FileHandlingGroup -.-> c/create_files("Create Files") c/FileHandlingGroup -.-> c/read_files("Read Files") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} c/if_else -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} c/pointers -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} c/memory_address -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} c/function_declaration -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} c/write_to_files -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} c/create_files -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} c/read_files -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} c/output -.-> lab-123313{{"任意のファイルのサイズを求めるプログラム"}} end

ヘッダーファイルのインクルード

必要なヘッダーファイル stdio.hstdlib.h をインクルードすることから始めます。

#include<stdio.h>
#include<stdlib.h>

main() 関数を作成する

次に、C プログラムのエントリーポイントである main() 関数を作成します。

int main()
{
    return 0;
}

変数を定義する

次に、必要な変数を定義します。ファイルを保持するために FILE ポインタが必要です。また、ファイルを読み取る際に現在の文字を保持するために char 型の変数が必要です。最後に、ファイルのサイズを保持するために整数型の size が必要です。

FILE *fp;
char ch;
int size = 0;

ファイルを開く

次に、fopen() 関数を使ってファイルを開き、ファイルが正常に開かれたかどうかを確認します。

fp = fopen("MyFile.txt", "r");

if (fp == NULL)
{
    printf("\nFile unable to open...\n");
    return 1;
}
else
{
    printf("\nFile opened...\n");
}

ファイルポインタを移動する

次に、fseek() 関数を使ってファイルポインタをファイルの末尾に移動します。

fseek(fp, 0, 2);

ファイルのサイズを取得する

次に、ftell() 関数を使ってファイルポインタの現在の位置を取得し、それを size 変数に格納します。

size = ftell(fp);

ファイルのサイズを表示する

最後に、printf() 関数を使ってファイルのサイズを表示します。

printf("The size of given file is: %d bytes\n", size);

ファイルを閉じる

これでファイルの操作は終わりですので、fclose() 関数を使ってファイルを閉じます。

fclose(fp);

完全なプログラムコード

任意のファイルのサイズを求める C プログラムの完全なコードは次の通りです。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch;
    int size = 0;

    fp = fopen("MyFile.txt", "r");

    if (fp == NULL)
    {
        printf("\nFile unable to open...\n");
        return 1;
    }
    else
    {
        printf("\nFile opened...\n");
    }

    fseek(fp, 0, 2);
    size = ftell(fp);

    printf("The size of given file is: %d bytes\n", size);

    fclose(fp);

    return 0;
}

まとめ

この実験では、C プログラミング言語で fseek() 関数と ftell() 関数を使って任意のファイルのサイズを求める方法を学びました。以下のトピックを扱いました。

  • ヘッダーファイルのインクルード
  • main() 関数の作成
  • 変数の定義
  • ファイルのオープン
  • ファイルポインタの移動
  • ファイルのサイズの取得
  • ファイルのサイズの表示
  • ファイルのクローズ

読み書きの後は常にファイルを閉じるのが良い習慣です。