日本-日本語
日本HPホーム 製品 & サービス サポート & ドライバー ソリューション ご購入方法
≫  お問い合わせ

製品とサービス >  ソフトウェアとOS >  OpenVMS >  マニュアル >  V8.3ライブラリ

OpenVMS マニュアル


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


前へ 次へ 目次 索引





putwc

ワイド文字を対応するマルチバイト値に変換し,結果を指定されたファイルに書き込みます。



形式

#include <wchar.h>

wint_t putwc (wint_t wc, FILE *file_ptr);




引数



wc

wint_t型のオブジェクト。

file_ptr

ファイル・ポインタ。



説明

putwcはマクロとして実装されることがあるため,副作用を持つファイル・ポインタ引数 (例: putwc (wc, *f++)) は間違って評価される可能性があります。このような場合には,代わりに fputwc関数を使用してください。

fputwcも参照してください。




戻り値

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




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関数を呼び出すと,以下のいずれかの結果が生じます。

  • 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 成功。
ゼロ以外 失敗。




rand, rand_r

0〜231 - 1 の範囲の擬似乱数を返します。



形式

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


前へ 次へ 目次 索引



         印刷用画面へ

プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡