FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API fopenf ( const char *modes, int *errno_out, const char *format, ... )printf 形式でファイル名を指定してファイルを開きます。
本関数は、呼び出し元が printf と同様の書式指定を用いてファイル名を組み立てられるようにするための fopen ラッパー関数です。
指定された書式文字列 (format) と可変引数 (…) からファイル名を生成し、その結果を用いてファイルをオープンします。
書式展開には vsnprintf を使用し、生成されたファイル名が OS の制限や内部バッファ長に収まらない場合、またはファイルのオープンに失敗した場合は NULL を返します。
失敗理由の取得が必要な場合は errno_out を指定してください。 指定された場合、環境に応じたエラーコードを格納します。
成功した場合は FILE* を返します。失敗した場合は NULL を返します。
ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。
FILE *fp = fopenf("r", NULL, "data_%d.txt", 123);int err;
FILE *fp = fopenf("r", &err, "data_%d.txt", 123);FMTIO_UTIL_EXPORT int FMTIO_UTIL_API statf ( file_stat_t *buf, const char *format, ... )printf 形式でファイル名を指定する stat ラッパー関数
この関数は、printf と同じ形式でファイル名を指定してファイル情報を取得します。 内部で vsnprintf を使用してファイル名をフォーマットし、stat を呼び出します。
成功時は 0、失敗時は -1
Linux と Windows では構造体のフィールドが異なるため、プラットフォーム固有のコードが必要です
file_stat_t st; int ret = statf(&st, "data_%d.txt", 123);FMTIO_UTIL_EXPORT FILE *FMTIO_UTIL_API vfopenf ( const char *modes, int *errno_out, const char *format, va_list args )printf 形式でファイル名を指定してファイルを開きます (va_list 版)。
fopenf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。 上位のラッパー関数やマクロから va_list を転送する場合に使用します。
成功した場合は FILE* を返します。失敗した場合は NULL を返します。
fopenf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vstatf ( file_stat_t *buf, const char *format, va_list args )printf 形式でファイル名を指定する stat ラッパー関数 (va_list 版)。
statf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
成功時は 0、失敗時は -1
statf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API removef ( const char *format, ... )printf 形式でファイル名を指定してファイルを削除します。
本関数は、printf と同じ形式でファイル名を指定してファイルを削除するための remove ラッパー関数です。
指定された書式文字列 (format) と可変引数 (…) からファイル名を生成し、その結果を用いてファイルを削除します。
成功時は 0、失敗時は非ゼロ値を返します。
ファイル名の最大長は OS の制限に従います (Windows: MAX_PATH=260, Linux: PATH_MAX=通常4096)。
int ret = removef("data_%d.txt", 123);vremovef
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vremovef ( const char *format, va_list args )printf 形式でファイル名を指定してファイルを削除します (va_list 版)。
removef() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
成功時は 0、失敗時は非ゼロ値を返します。
removef
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API openf ( int flags, int mode, const char *format, ... )printf 形式でファイル名を指定してファイルを開きます (低レベル)。
本関数は、printf と同じ形式でファイル名を指定して低レベルファイルオープンを行うための open ラッパー関数です。
Linux では open()、Windows では _open() を使用します。
成功時はファイルディスクリプタ (0 以上の整数)、失敗時は -1 を返します。
int fd = openf(O_WRONLY | O_CREAT | O_TRUNC, 0644, "log_%d.txt", pid);vopenf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vopenf ( int flags, int mode, const char *format, va_list args )printf 形式でファイル名を指定してファイルを開きます (低レベル、va_list 版)。
openf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
成功時はファイルディスクリプタ、失敗時は -1 を返します。
openf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API accessf ( int mode, const char *format, ... )printf 形式でファイル名を指定してアクセス可否を確認します。
本関数は、printf と同じ形式でファイル名を指定してファイルの存在や アクセス権限を確認するための access ラッパー関数です。
Linux では access()、Windows では _access() を使用します。
アクセス可能な場合は 0、不可の場合は -1 を返します。
if (accessf(FMTIO_F_OK, "config_%d.txt", instance_id) == 0)
{
// ファイルが存在する
}vaccessf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vaccessf ( int mode, const char *format, va_list args )printf 形式でファイル名を指定してアクセス可否を確認します (va_list 版)。
accessf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
アクセス可能な場合は 0、不可の場合は -1 を返します。
accessf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API mkdirf ( const char *format, ... )printf 形式でディレクトリ名を指定してディレクトリを作成します。
本関数は、printf と同じ形式でディレクトリ名を指定してディレクトリを作成するための mkdir ラッパー関数です。
Linux では mkdir() をパーミッション 0755 で呼び出します。 Windows では _mkdir() を呼び出します (パーミッション指定はありません)。
成功時は 0、失敗時は -1 を返します。
int ret = mkdirf("logs_%04d", year);vmkdirf
FMTIO_UTIL_EXPORT int FMTIO_UTIL_API vmkdirf ( const char *format, va_list args )printf 形式でディレクトリ名を指定してディレクトリを作成します (va_list 版)。
mkdirf() と同等ですが、可変引数リストの代わりに va_list を受け取ります。
成功時は 0、失敗時は -1 を返します。
mkdirf
#define FMTIO_F_OK 0ファイルの存在を確認するモード定数。
accessf() の mode 引数に使用します。
#define FMTIO_R_OK 4ファイルの読み取り権限を確認するモード定数。
accessf() の mode 引数に使用します。
#define FMTIO_W_OK 2ファイルの書き込み権限を確認するモード定数。
accessf() の mode 引数に使用します。
#define FMTIO_UTIL_EXPORTDLL エクスポート/インポート制御マクロ。
ビルド条件に応じて以下の値を取ります。
| 条件 | 値 |
|---|---|
| Linux (非 Windows) | (空) |
Windows / __INTELLISENSE__ 定義時 |
(空) |
Windows / FMTIO_UTIL_STATIC 定義時 (静的リンク) |
(空) |
Windows / FMTIO_UTIL_EXPORTS 定義時 (DLL ビルド) |
__declspec(dllexport) |
Windows / FMTIO_UTIL_EXPORTS 未定義時 (DLL 利用側) |
__declspec(dllimport) |
#define FMTIO_UTIL_API呼び出し規約マクロ。
Windows 環境では __stdcall 呼び出し規約を指定します。
Linux (非 Windows) 環境では空に展開されます。
既に定義済みの場合は再定義されません。
typedef struct stat file_stat_t;