ファイルのサイズをバイト数で返します。

構文

long fsize(
  char *filename
);

パラメータ

filename
[in] サイズを調べるファイル名へのポインタです。

戻り値

 関数がファイルサイズのバイト数,もしくは異常終了した場合ERRORを返します。
説明
正の整数値 ファイルサイズのバイト数。
ERROR 異常終了(ファイルが存在しない)。

解説

 fopen中にfflushを行っても、fsizeによるファイルのサイズは変化しません。
 fcloseを行うとサイズが確定します。

必要条件

ヘッダファイル:
lib.h
ライブラリファイル:
libSTARTUPOPH5000.a

サンプル

#include <stdio.h>
#include "lib.h"

void main(void)
{
    long size;
    FILE *fp;
    static char data[20+1];
    unsigned int recsize;

    for (recsize = 0; recsize < 20; recsize++)  // prepare some data
    {
        data[recsize] = 'a' + recsize;  // quit when recsize == 20
    }

    data[recsize] = '\0';
    printf("\fPress a key");

    for(;;)
    {
        ResetKey();
        while (!kbhit())
        {
            Idle();
        }

        if (NULL == (fp = fopen("TEST.DAT","r+b")))
        {
            if (NULL == (fp = fopen("TEST.DAT","w+b")))
            {
                printf("\fError opening\nTEST.DAT");
                continue;
            }
        }
        if (fseek(fp, 0L, SEEK_END) != 0)
        {
            fclose(fp);
            printf("\fError fseek on\nTEST.DAT");
            continue;
        }
        if (fwrite(data, 1, recsize, fp) != recsize)
        {
            fclose(fp);
            printf("\fError writing\nTEST.DAT");
            continue;
        }
        fclose(fp);

        size = fsize("TEST.DAT");
        if (size > -1)
        {
            printf("\fSize = \n%ld bytes", size);
        }
        else
        {
            printf("\fTEST.DAT cannot\nbe found!");
        }
    }
}

最終更新日:2020/10/08