library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


OpenVMS

OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (下巻)


前へ 次へ 目次 索引



putwchar

ワイド文字を標準出力 ( stdout) に書き込み,その文字を返します。

形式

#include <wchar.h>

wint_t putwchar (wint_t wc);


引数

wc

wint_t型のオブジェクト。

説明

putwchar関数は fputwc(wc, stdout) と同じです。

戻り値

x ファイルに書き込まれる文字。成功を示します。
WEOF 出力エラーを示します。関数は errno を設定します。この関数が設定する errno 値のリストについては, fputwc を参照してください。


pwrite (Alpha, I64)

ファイル・ポインタを変更せずに,ファイル内の指定された位置に書き込みを行います。

形式

#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 に対応しています。


qabs, llabs (Alpha, I64)

整数の絶対値を __int64として返します。 llabsqabsの同義語です。

形式

#include <stdlib.h>

__int64 qabs (__int64 j);

__int64 llabs (__int64 j);


引数

j

__int64型の値。

qdiv, lldiv (Alpha, I64)

引数の間で除算を行い,商と剰余を返します。 lldivqdivの同義語です。

形式

#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; 


qsort

オブジェクトの配列をその場でソートします。クイック・ソート・アルゴリズムをインプリメントしています。

形式

#include <stdlib.h>

void qsort (void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *));

関数バリアント qsort関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _qsort32_qsort64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。

引数

base

配列の最初のメンバへのポインタ。このポインタは要素へのポインタ型で,文字へのポインタ型にキャストされていなくてはなりません。

nmemb

配列の中のオブジェクトの数。

size

オブジェクトのサイズ (バイト数)。

compar

比較関数へのポインタ。

説明

compar がポイントしている比較関数には,2 つの引数が渡されます。この 2 つの引数は,比較されるオブジェクトをポイントしています。第 1 引数が第 2 引数よりも小さい場合,等しい場合,および大きい場合に,比較関数はそれぞれ 0 よりも小さい整数,0,および 0 よりも大きい整数を返します。

比較関数 compar は,すべてのバイトを比較する必要はないので,オブジェクトには比較する値に加えて任意のデータを格納することができます。

比較の結果,等しいと見なされる 2 つのオブジェクトの出力順序は予測不可能です。


raise

指定されたソフトウェア・シグナルを発生させます。シグナルを生成すると, 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関数を呼び出すと,以下のいずれかの結果が生じます。

シグナル処理の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 4 章を参照してください。

gsignal, signal, ssignal,および sigvecも参照してください。


戻り値

0 成功。
ゼロ以外 失敗。


rand, rand_r

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 擬似乱数です。


random

よりランダムなシーケンスの擬似乱数を生成します。

形式

#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 乱数です。


[no]raw

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(); 
} 


read

ファイルからバイトを読み込み,それらをバッファに格納します。

形式

#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); 
}                                                           


readdir, readdir_r

ディレクトリ内のエントリを探します。

形式

#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 がポイントするストレージは,少なくとも NAME_MAX + 1 個の要素を含んだ char d_nameメンバの配列を含んでいる direntに十分な大きさでなくてはなりません。


例については, closedirの説明を参照してください。


戻り値

x readdir の実行が成功した場合には, struct dirent 型のオブジェクトへのポインタ。
0 readdir_r の実行が成功しました。
x エラーの場合には,エラー値 ( readdir_r のみ。)
NULL エラーが発生したか,ディレクトリ・ストリームの終端に達しました ( readdir_r のみ)。エラーが発生した場合, errno はその原因を示す値に設定されます。


前へ 次へ 目次 索引