Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語のftell()関数とは?使い方とファイルサイズの取得方法を解説

C言語のftell()関数とは

C言語におけるftell()関数は、指定されたストリームの現在のファイル位置(ファイル先頭からのオフセット)を返す関数です。ファイルポインタをファイルの末尾に移動させた後にこの関数を呼び出すことで、ファイル全体のサイズを取得することができます。

戻り値はlong int型であるため、32,767バイトを超えるデータを持つ大きなファイルのサイズも正しく扱うことが可能です。

ftell()の構文

long int ftell(FILE *stream)

パラメータ

  • stream − ストリームを識別するFILEオブジェクトへのポインタです。

ftell()の使用例

ここでは、以下の内容が書かれた「one.txt」というファイルが存在すると仮定します。

This is demo text!
This is demo text!
This is demo text!

それでは、実際のコード例を見てみましょう。まずfseek()を使ってファイルポインタをファイルの末尾へ移動し、その位置をftell()で取得することで、ファイルサイズを求めています。

サンプルコード

#include <stdio.h>
#include<conio.h>
void main () {
    FILE *f;
    int len;
    f = fopen("one.txt", "r");
    if(f == NULL) {
        perror("Error opening file");
        return(-1);
    }
    fseek(f, 0, SEEK_END);
    len = ftell(f);
    fclose(f);
    printf("Size of file: %d bytes", len);
    getch();
}

実行結果

Size of file: 78 bytes

このように、fseek()ftell()を組み合わせることで、ファイルを開き直すことなく簡単にファイルサイズを取得できます。なお、より安全で移植性の高いコードにするには、戻り値をlong型の変数に格納し、printfでは%ld書式指定子を使用して表示することが推奨されます。

  1. 7Zファイルとは?開き方・作り方・変換方法をわかりやすく解説

    拡張子が .7Z のファイルは、「7-Zip Compressed(7-Zip圧縮ファイル)」と呼ばれる圧縮アーカイブです。パソコン上のフォルダに少し似ていますが、実際にはひとつのファイルとして機能します。 フォルダと7Zファイルは、どちらも複数のファイルやサブフォルダを格納できる点で共通しています。しかしフォルダと違って、7Zファイルは .7Z という拡張子を持つ単一のファイルであり、中身のデータを圧縮してまとめたアーカイブである点が大きな違いです。 7Zファイルを目にするのは、主にインターネットからファイルをダウンロードするときです。ソフトウェア一式、写真アルバム、大量のドキュメントなど

  2. AIファイルとは?開き方から変換方法まで徹底解説

    この記事のポイントAIファイルは、Adobe Illustrator(アドビ イラストレーター)で作成されるベクター画像ファイルです。開くにはIllustratorを使用するか、無料のInkscapeなどを利用できます。Zamzarなどのオンラインツールや各種ソフトを使って、PNG・JPG・SVGなどの形式に変換できます。この記事では、AIファイルの概要から、実際に開く方法、SVG・JPG・PDF・PNGなど他の形式への変換方法まで、わかりやすく解説します。他のソフトウェアとの互換性を持たせたい場合にも役立つ内容です。AIファイルとは何か拡張子が「.ai」のファイルは、ほとんどの場合、Adob