前へ | 次へ | 目次 | 索引 |
ファイル・ツリーを検索します。
#include <ftw.h>int ftw (const char *path, int(*function)(const char *, const struct stat *, int), int depth);
path
検索するディレクトリ階層構造。function
ディレクトリ階層構造の各ファイルに対して起動する関数。depth
ftwで使用できるディレクトリ・ストリームまたはファイル記述子 ( またはその両方 ) の最大数。この引数は 1〜OPEN_MAX の範囲でなければなりません。
ftw関数は,path 引数によって指定されるディレクトリから順にディレクトリ階層構造を再帰的に検索します。階層構造内の各ファイルに対して, ftwは function 引数によって指定される関数を呼び出し,ファイルの名前を格納したヌル区切り文字列,ファイルに関する情報を格納した stat構造体を指すポインタ,および整数を渡します。
整数はファイル・タイプを示します。使用できる値は <ftw.h>に定義されており,次のとおりです。
FTW_F 一般ファイル FTW_D ディレクトリ FTW_DNR 読み込むことができないディレクトリ FTW_NS stat を正しく実行できないファイル
整数が FTW_DNR の場合は,そのディレクトリに格納されているファイルとサブディレクトリは処理されません。
整数が FTW_NS の場合は, stat構造体の内容は意味がありません。たとえば,読み込みアクセス許可が与えられ,実行 (検索) アクセス許可が与えられていないディレクトリ内のファイルの場合, function 引数は FTW_NS を渡します。
ftw関数はファイルまたはサブディレクトリを処理する前に,ディレクトリの処理を終了します。
ftw関数は次のいずれかが発生するまで,検索を続行します。
- path 引数によって指定されたディレクトリ階層構造が終了するまで。
- function 引数によって指定された関数の呼び出しが 0 以外の値を返すまで。
- ftw関数の内部でエラー (I/O エラーなど) が検出されるまで。
ftw関数は再帰的であるため,非常に深いファイル構造に適用すると,スタック・オーバフローが発生して,メモリ・フォルトで終了する可能性があります。
ftw関数では,操作時に動的記憶域を割り当てるために malloc関数が使用されます。 function 引数によって示される関数から longjmpを呼び出した場合など, ftwが強制終了された場合, ftwはその記憶域の割り当てを解除することができません。したがって,記憶域は割り当てられたままになります。
割り込みを安全に処理するには,割り込みが発生したという事実を格納し, function 引数によって指定される関数が次回呼び出されるときに 0 以外の値を返すようにします。
注意
ftw関数はリエントラントです。 function 引数として指定される関数もリエントラントであることを確認してください。
malloc, longjump, lstat, statも参照してください。
0 正常終了を示します。 x function 引数によって指定される関数が検索を停止したことを示し,関数から返された値を返します。 - 1 エラーを示します。 errno は次のいずれかの値に設定されます。
- EACCES--- path 引数のコンポーネントに対して検索アクセス許可が拒否されたか,または path 引数に対して読み込みアクセス許可が拒否されました。
- ENAMETOOLONG---パス文字列の長さが PATH_MAX より長いか,または [_POSIX_NO_TRUNC] が有効なときに,パス名コンポーネントが NAME_MAX より長いことを示します。
- ENOENT--- path 引数が存在しないファイルの名前を指しているか,または空文字列を指しています。
- ENOMEM---この操作を実行するのに必要なメモリが不足しています。
また, function 引数によって示される関数でエラーが検出されると, errno が適切な値に設定されることがあります。
特定のファイルに対する I/O が完了するのを待ちます。
#include <stdio.h>int fwait (FILE *fp);
fp
オープンされているファイルに対応するファイル・ポインタ。
fwait関数は主に,保留状態の非同期 I/O が完了するのを待つために使用されます。
0 正常終了を示します。 - 1 エラーを示します。
ストリームの単位を判断し,設定します。
#include <wchar.h>int fwide (FILE *stream, int mode);
stream
ファイル・ポインタ。mode
ストリームの単位を指定する値。
fwide関数は,stream によって示されるストリームの単位を判断し,ストリームの単位が設定されていない場合は,次の方法で mode 引数に従って設定します。
mode 引数: fwide 関数の動作: 0 より大きい場合 ストリームをワイド文字単位に設定する。 0 より小さい場合 ストリームをバイト単位に設定する。 0 の場合 ストリームの単位を変更しない。
ストリームの単位がすでに設定されている場合は, fwideは単位を変更しません。 fwideに対してエラー状態が定義されていないため, fwideが 0 を返した場合は,呼び出し元のアプリケーションは errnoを確認する必要があります。
> 0 呼び出しの後,ストリームはワイド文字単位になります。 < 0 呼び出しの後,ストリームはバイト単位になります。 0 呼び出しの後,ストリームは単位が設定されない状態になるか,またはストリーム引数が不正です。 errno が設定されます。
ワイド文字の書式文字列の制御のもとで出力をストリームに書き込みます。
#include <wchar.h>int fwprintf (FILE *stream, const wchar_t *format, ...);
stream
ファイル・ポインタ。format
書式指定を格納したワイド文字の文字列を指すポインタ。書式指定および変換指定とそれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。...
省略可能な式であり,式の型は書式指定に指定した変換指定に対応します。変換指定を指定しない場合は,出力ソースを省略できます。変換指定を指定する場合は,関数呼び出しに変換指定と正確に同じ数の出力ソースを指定する必要があります。変換指定は出力ソースの型と一致しなければなりません。
変換指定は左から右への順に出力ソースに対応付けられます。出力ソースの数の方が多い場合は,超過するソースは無視されます。
fwprintf関数は, format によって示されるワイド文字の文字列の制御のもとで, stream によって示されるストリームに出力を書き込みます。書式指定は,後続の引数を出力に変換する方法を指定します。書式指定に対して引数が不足している場合は,動作は未定義になります。引数が残っているのに,書式指定が不足する場合は,超過する引数は評価されますが,無視されます。書式指定文字列の末尾が検出されると, fwprintf関数は制御を呼び出し元に返します。format 引数は,次のような 0 個以上のディレクティブで構成されます。
- 通常のワイド文字 (パーセント記号 (%) を除く)
- 変換指定
n 書き込んだワイド文字の文字数。 負の値 エラーを示します。 errno は次のいずれかの値に設定されます。
- EILSEQ---不正な文字が検出されました。
- EINVAL---引数が不足しています。
- ENOMEM---変換のために使用できるメモリが不足しています。
- ERANGE---浮動小数点演算オーバフロー。
- EVMSERR---変換不可能な OpenVMS エラー。 vaxc$errno には OpenVMS エラー・コードが格納されます。これは,オーバフローが発生したために数値への変換が失敗したことを示します。
I/O サブシステムからエラーが返された場合,この関数は errno を次の値に設定することがあります。
- EBADF---ファイル記述子が不正です。
- EIO---I/O エラー。
- ENOSPC---ファイルを格納しているデバイスに空き領域がありません。
- ENXIO---デバイスが存在しません。
- EPIPE---パイプが壊れています。
- ESPIPE---追加のためにオープンされているファイルで不正なシークが実行されました。
- EVMSERR---変換不可能な OpenVMS エラー。 vaxc$errno には,OpenVMS エラー・コードが格納されます。これは,対応する C エラー・コードがない I/O エラーが発生したことを示します。
次の例では,日付と時刻を "Sunday, July 3, 10:02" という形式でプリントし,その後, pi を小数点以下 5 桁まで印刷する方法を示しています。
#include <math.h> #include <stdio.h> #include <wchar.h> /*...*/ wchar_t *weekday, *month; /* pointers to wide-character strings */ int day, hours, min; fwprintf(stdout, L"%ls, %ls %d, %.2d:%.2d\n", weekday, month, day, hour, min); fwprintf(stdout, L"pi = %.5f\n", 4 * atan(1.0));
指定された数の項目をファイルに書き込みます。
#include <stdio.h>size_t fwrite (const void *ptr, size_t size_of_item, size_t number_items, FILE *file_ptr);
ptr
情報の書き込み元のメモリ位置を指すポインタ。示されるオブジェクトの型は書き込まれる項目の型によって決定されます。size_of_item
書き込む項目のサイズ (バイト数)。number_items
書き込む項目の数。file_ptr
項目の書き込み先のファイルを示すファイル・ポインタ。
size_t型は,次に示すように <stdio.h>ヘッダ・ファイルに定義されています。
typedef unsigned int size_t
書き込みはファイルの現在の位置から開始されます。項目は,最初の引数によって示される位置から始まる記憶域から書き込まれます。項目のサイズ ( バイト数 ) も指定する必要があります。
file_ptr によって示されるファイルがレコード・ファイルの場合は, fwrite関数は少なくとも number_items 個のレコードを出力します。各レコードの長さは size_of_item です。
x 書き込んだ項目の数。書き込まれるレコードの数は,ファイルの最大レコード・サイズに応じて異なります。
ワイド文字の書式指定文字列の制御のもとで,ストリームから入力を読み込みます。
#include <wchar.h>int fwscanf (FILE *stream, const wchar_t *format, ...);
stream
ファイル・ポインタ。format
書式指定を格納したワイド文字の文字列を指すポインタ。書式指定と変換指定,および対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。...
省略可能な式であり,式の結果は書式指定に指定した変換指定に対応します。書式指定と変換指定,およびそれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。変換指定を指定しない場合は,入力ポインタを省略できます。変換指定を指定する場合は,関数呼び出しに変換指定と正確に同じ数の入力ポインタを指定する必要があります。変換指定は入力ポインタの型と一致しなければなりません。
変換指定は左から右への順に入力ソースに対応付けられます。入力ポインタの数の方が多い場合は,超過するポインタは無視されます。
fwscanf関数は, format によって示されるワイド文字の文字列の制御のもとで, stream によって示されるストリームから入力を読み込みます。書式指定に対して引数が不足している場合は,動作は未定義になります。引数が残っているのに,書式指定が不足する場合は,超過する引数は評価されますが,無視されます。書式指定は,次のような 0 個以上のディレクティブで構成されます。
- 1 つ以上の空白ワイド文字
- 通常のワイド文字 (パーセント記号 (%)) と空白ワイド文字を除く)
- 変換指定
各変換指定はワイド文字 % から始まります。
stream 引数によって示されるストリームがバイト単位でもワイド文字単位でもない場合は, fwscanfはストリームをワイド文字単位に設定します。
n 代入した入力項目の数。提供された項目の数より少なくなることがあり,早い段階で照合エラーが発生した場合は,0 になることもあります。 EOF エラーを示します。変換の前に入力エラーが発生しました。
引数をヌル区切りの ASCII 数字列に変換し,文字列のアドレスを返します。
#include <stdlib.h>関数バリアント gcvt関数には, _gcvt32および _gcvt64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *gcvt (double value, int ndigit, char *buffer);
value
ヌル区切りの ASCII 数字列に変換される double型のオブジェクト。ndigit
変換後の数字列で使用される ASCII 数字の桁数。 ndigit が 6 未満の場合は,値は 6 になります。buffer
変換後の数字列を格納する記憶域の位置。
gcvt関数は,変換された文字列をバッファに格納し,バッファのアドレスを返します。可能な場合は, gcvtは F 形式で有効桁 ndigit 桁の数字を生成します。不可能な場合は E 形式で生成します。後続の 0 は削除されます。ecvt, fcvt, gcvt関数は,浮動小数点演算に関して IEEE 標準で指定されている次の特殊な値を表します。
値 表現 クワイエット NaN NaNQ シグナリング NaN NaNS +無限大 無限大 - 無限大 - 無限大
これらの各値に割り当てられる符号は,sign 引数に格納されます。 IEEE 浮動小数点表現では,0 (ゼロ) という値は正の場合も負の場合もあり,どちらであるかは sign 引数によって設定されます。
fcvtおよび ecvtも参照してください。
x バッファのアドレス。
前へ | 次へ | 目次 | 索引 |