HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
ワイド文字を標準出力 ( stdout) に書き込み,その文字を返します。
#include <wchar.h>wint_t putwchar (wint_t wc);
wc
wint_t型のオブジェクト。
putwchar関数は fputwc(wc, stdout) と同じです。
x ファイルに書き込まれる文字。成功を示します。 WEOF 出力エラーを示します。関数は errno を設定します。この関数が設定する errno 値のリストについては, fputwc を参照してください。
ファイル・ポインタを変更せずに,ファイル内の指定された位置に書き込みを行います。
#include <unistd.h>ssize_t pwrite (int file_desc, const void *buffer, size_t nbytes, off_t offset);
file_desc
現在書き込みまたは更新用にオープンされているファイルを指すファイル記述子。buffer
出力データを取り出す,連続領域のアドレス。nbytes
書き込み操作を行う最大バイト数。offset
ファイル内の書き込み位置を指定するオフセット。
pwrite関数は,ファイル・ポインタを変更せずにファイル内の指定された位置に書き込みを行うことを除き, writeと同じ動作を行います。 pwriteの最初の 3 つの引数は, writeと同じです。ファイル内の書き込み位置を指定するために, 4 番目の引数 offset が追加されています。
n 書き込むバイト数。 - 1 失敗すると,ファイル・ポインタは変更されず, pwrite は以下のいずれかの値を errno に設定します。
- EINVAL -- offset 引数が不正です。値が負です。
- ESPIPE -- ファイル記述子が,パイプまたは FIFO に対応しています。
整数の絶対値を __int64として返します。 llabsは qabsの同義語です。
#include <stdlib.h>__int64 qabs (__int64 j);
__int64 llabs (__int64 j);
j
__int64型の値。
引数の間で除算を行い,商と剰余を返します。 lldivは qdivの同義語です。
#include <stdlib.h>qdiv_t qdiv (__int64 numer, __int64 denom);
lldiv_t lldiv (__int64 numer, __int64 denom);
numer
__int64型の分子。denom
__int64型の分母。
qdiv_t型と lldiv_t型は, <stdlib.h>ヘッダ・ファイルに次のように定義されています。
typedef struct { __int64 quot, rem; } qdiv_t, lldiv_t;
オブジェクトの配列をその場でソートします。クイック・ソート・アルゴリズムをインプリメントしています。
#include <stdlib.h>関数バリアント qsort関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _qsort32と _qsort64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。void qsort (void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *));
base
配列の最初のメンバへのポインタ。このポインタは要素へのポインタ型で,文字へのポインタ型にキャストされていなくてはなりません。nmemb
配列の中のオブジェクトの数。size
オブジェクトのサイズ (バイト数)。compar
比較関数へのポインタ。
compar がポイントしている比較関数には,2 つの引数が渡されます。この 2 つの引数は,比較されるオブジェクトをポイントしています。第 1 引数が第 2 引数よりも小さい場合,等しい場合,および大きい場合に,比較関数はそれぞれ 0 よりも小さい整数,0,および 0 よりも大きい整数を返します。比較関数 compar は,すべてのバイトを比較する必要はないので,オブジェクトには比較する値に加えて任意のデータを格納することができます。
比較の結果,等しいと見なされる 2 つのオブジェクトの出力順序は予測不可能です。
指定されたソフトウェア・シグナルを発生させます。シグナルを生成すると, signal, ssignal,または sigvec関数によって設定されたアクション・ルーチンが呼び出されます。
#include <signal.h>int raise (int sig); (ANSI C)
int raise (int sig[, int sigcode]); (HP C Extension)
sig
生成するシグナル。sigcode
オプションのシグナル・コード。 strict ANSI C モードでコンパイルしていない場合にのみ使用できます。たとえば,シグナル SIGFPE ( 算術トラップ・シグナル ) は,それぞれ異なるタイプの算術トラップを表す 10 種類のコードを持っています。シグナル・コードは,ニーモニックまたは番号で表すことができます。算術トラップ・コードは 1 〜 10 の番号で表現され, SIGILL コードは番号 0 〜 2 で表現されます。コード値は <signal.h>ヘッダ・ファイルに定義されています。シグナルのニーモニック,コード,および対応する OpenVMS 例外のリストについては,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』表 4-4 および表 4-5 を参照してください。
raise関数を呼び出すと,以下のいずれかの結果が生じます。
- raiseが <signal.h>ヘッダ・ファイルに定義されている範囲外の sig 引数を指定していた場合, raise関数は 0 を返し, errno変数は EINVAL に設定される。
- signal, ssignal, または sigvecがシグナルの SIG_DFL( デフォルト・アクション ) を設定している場合,関数は返らない。イメージは,シグナルに対応する OpenVMS エラー・コードで終了する。
- signal, ssignal, または sigvecがシグナルのアクションとして SIG_IGN( シグナルを無視 ) を設定している場合, raiseは引数 sig を返す。
- signal, ssignal, または sigvecは,シグナルのアクション関数を設定しなくてはならない。その関数が呼び出され,その戻り値が raiseから返される。
シグナル処理の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 4 章を参照してください。
gsignal, signal, ssignal,および sigvecも参照してください。
0 成功。 ゼロ以外 失敗。
0〜231 - 1 の範囲の擬似乱数を返します。
#include <math.h>int rand (void);
int rand_r (unsigned int seed); (Alpha, I64)
seed
初期シードの値。
rand関数は,少なくとも 232 の周期で, 0 〜 {RAND_MAX} の範囲の擬似乱数整数のシーケンスを算出します。rand_r関数は, 0 〜 {RAND_MAX} の範囲の擬似乱数整数のシーケンスを算出します。 {RAND_MAX} マクロの値は,少なくとも 32767 です。
seed が指すオブジェクトの初期値が同じ状態で rand_rが呼び出され, rand_rから戻って次に呼び出すまでの間にそのオブジェクトを変更していない場合は,同じシーケンスが生成されます。
srandも参照してください。
他の乱数アルゴリズムについては, randomと,すべての * 48関数を参照してください。
n 擬似乱数です。
よりランダムなシーケンスの擬似乱数を生成します。
#include <stdlib.h>long int random (void);
random関数は, rand関数と基本的に同じ呼び出しシーケンスと初期化プロパティを持つが,よりランダムなシーケンスを生成する乱数ジェネレータです。 randが生成する下位 12 ビットはパターンとして循環します。しかし, randomが生成するビットはすべてが利用可能です。たとえば, random() &1 はランダムな 2 進値を生成します。random関数は,デフォルトでは整数 31 個のサイズの状態配列を使用する,非線形の,加算的フィードバックの乱数ジェネレータを使用して, 0〜 231-1 の範囲の連続した擬似乱数を返します。この乱数ジェネレータの周期は,約 16*( 231-1 ) です。乱数ジェネレータの周期は,状態配列のサイズによって決定されます。状態配列のサイズを増やすと,周期も増えます。
256 バイトの状態情報では,乱数ジェネレータの周期は 269 よりも大きくなり,ほとんどの用途に十分です。
rand関数と同様に, random関数はデフォルトでは,シードとして 1 の値を使って srandom関数を呼び出すことで複製できる数のシーケンスを生成します。 srandom関数は, srand関数とは異なり,使用される状態情報の量が 1 ワードよりも多いため,古いシードを返しません。
rand, srand, srandom, setstate, および initstateも参照してください。
n 乱数です。
raw モードは,Curses 入力ルーチンの [w]getchと [w]getstrでしか動作しません。 raw モードは,UNIX I/O,ターミナル I/O,および標準 I/O の HP C RTL エミュレーションではサポートされていません。
#include <curses.h>raw()
noraw()
raw モードの読み込みは,次の 2 つの条件のうちのどちらかで満たされます。ターミナルに一定の文字数 (5) が入力された後,またはターミナルから文字を受信してから一定の時間 (10 秒) が経った後です。
/* Example of standard and raw input in Curses package. */ #include <curses.h> main() { WINDOW *win1; char vert = '.', hor = '.', str[80]; /* Initialize standard screen, turn echo off. */ initscr(); noecho(); /* Define a user window. */ win1 = newwin(22, 78, 1, 1); leaveok(win1, TRUE); leaveok(stdscr, TRUE); box(stdscr, vert, hor); /* Reset the video, refresh(redraw) both windows. */ mvwaddstr(win1, 2, 2, "Test line terminated input"); wrefresh(win1); /* Do some input and output it. */ nocrmode(); wgetstr(win1, str); mvwaddstr(win1, 5, 5, str); mvwaddstr(win1, 7, 7, "Type something to clear screen"); wrefresh(win1); /* Get another character then delete the window. */ wgetch(win1); wclear(win1); mvwaddstr(win1, 2, 2, "Test raw input"); wrefresh(win1); /* Do some raw input 5 chars or timeout - and output it. */ raw(); getstr(str); noraw(); mvwaddstr(win1, 5, 5, str); mvwaddstr(win1, 7, 7, "Raw input completed"); wrefresh(win1); endwin(); }
ファイルからバイトを読み込み,それらをバッファに格納します。
#include <unistd.h>ssize_t read (int file_desc, void *buffer, size_t nbytes); (ISO POSIX-1)
int read (int file_desc, void *buffer, int nbytes); (Compatability)
file_desc
ファイル記述子。指定されるファイル記述子は,現在読み込みのためにオープンされているファイルを参照していなくてはなりません。buffer
入力データが格納される連続したストレージのアドレス。nbytes
読み込み操作に関わるバイト数の上限。
read関数は,読み込んだバイトの数を返します。戻り値は必ずしも nbytes に等しくはなりません。たとえば,入力がターミナルからである場合には,たかだか 1 行分の文字しか読み込まれません。
注意
read関数はレコード・ファイルの中のレコード境界を越えないため,たかだか 1 つのレコードしか読み込みません。各レコードに対し,個別に読み込みを行う必要があります。
n 読み込まれたバイト数。 - 1 読み込みエラーを示します。物理的な入力エラー,不正なバッファ・アドレス,保護違反,未定義のファイル記述子などの理由が考えられます。
#include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> main() { int fd, i; char buf[10]; FILE *fp ; /* Temporary STDIO file */ /* Create a dummy data file */ if ((fp = fopen("test.txt", "w+")) == NULL) { perror("open"); exit(1); } fputs("XYZ\n",fp) ; fclose(fp) ; /* And now practice "read" */ if ((fd = open("test.txt", O_RDWR, 0, "shr=upd")) <= 0) { perror("open"); exit(0); } /* Read 2 characters into buf. */ if ((i = read(fd, buf, 2)) < 0) { perror("read"); exit(0); } /* Print out what was read. */ if (i > 0) printf("buf='%c%c'\n", buf[0], buf[1]); close(fd); }
ディレクトリ内のエントリを探します。
#include <dirent.h>struct dirent *readdir (DIR *dir_pointer);
int readdir_r (DIR *dir_pointer, struct dirent *entry, struct dirent **result);
dir_pointer
オープン・ディレクトリの dir構造体へのポインタ。entry
指定されたストリームの現在位置にあるディレクトリ・エントリによって初期化される, dirent構造体へのポインタ。result
実行に成功したときに,entry へのポインタが格納される位置。
readdir関数は, dir_pointer によって指定されるディレクトリ・ストリーム内の現在位置にあるディレクトリ・エントリを表す構造体へのポインタを返し,ディレクトリ・ストリームの位置を次のエントリに設定します。ディレクトリ・ストリームの終端に達すると,NULL ポインタを返します。ディレクトリ・エントリは, <dirent.h>ヘッダ・ファイルに定義されている dirent構造体によって記述されます。<dirent.h>ヘッダ・ファイルに定義されている DIR型は,ディレクトリ・ストリームを表します。ディレクトリ・ストリームとは,特定のディレクトリ内のすべてのディレクトリ・エントリの順序付きのシーケンスです。ディレクトリ・エントリはファイルを表します。 readdir関数の操作とは非同期的に,ディレクトリのファイルの削除や追加を行うことができます。
readdir関数から返されるポインタは,同じディレクトリ・ストリームに対する別の readdir呼び出しによって上書きすることができるデータをポイントしています。このデータは,他のディレクトリ・ストリームに対する別の readdir呼び出しによって上書きされることはありません。
直前の opendirまたは rewinddir関数の呼び出しの後に,ディレクトリのファイルが削除または追加された場合,その後の readdir関数の呼び出しでは,そのファイルのエントリが返されない可能性があります。
ディレクトリの終端に達したとき,または無効な seekdir操作を検出したとき, readdir関数は null 値を返します。
無効な位置をシークしようと試みると, readdir関数は,次に呼び出されたときに null 値を返します。その前の telldir関数呼び出しが,その位置を返します。
readdir_r関数は, readdirのリエントラントなバージョンです。 dir_pointer に加えて,指定されたストリームの現在のディレクトリ・エントリが返される dirent構造体へのポインタを指定する必要があります。
操作が成功した場合, readdir_rは 0 を返し, result に次の 2 つのうちのどちらかのポインタを格納します。
- エントリが発見された場合には,entry へのポインタ
- ディレクトリ・ストリームの終端に達した場合には,NULL ポインタ
エラーが発生した場合には,エラーの原因を示すエラー値が返されます。
entry がポイントするストレージは,少なくとも NAME_MAX + 1 個の要素を含んだ char d_nameメンバの配列を含んでいる direntに十分な大きさでなくてはなりません。
例については, closedirの説明を参照してください。
x readdir の実行が成功した場合には, struct dirent 型のオブジェクトへのポインタ。 0 readdir_r の実行が成功しました。 x エラーの場合には,エラー値 ( readdir_r のみ。) NULL エラーが発生したか,ディレクトリ・ストリームの終端に達しました ( readdir_r のみ)。エラーが発生した場合, errno はその原因を示す値に設定されます。
| 前へ | 次へ | 目次 | 索引 |