日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル >  V8.3ライブラリ

OpenVMS マニュアル


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


前へ 次へ 目次 索引





bsearch

バイナリ検索を実行します。ソートされたオブジェクトの配列から指定のオブジェクトを検索します。



形式

#include <stdlib.h>

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

関数バリアント bsearch関数には, _bsearch32および _bsearch64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。


引数



key

配列内で検索するオブジェクトを指すポインタ。このポインタは,pointer-to-object 型で,pointer-to-void 型にキャストされなければなりません。

base

配列の最初のメンバを指すポインタ。このポインタは pointer-to-object 型で,pointer-to-void 型にキャストされなければなりません。

nmemb

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

size

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

compar

比較関数を指すポインタ。



説明

配列はまず,compar によって示される比較関数に従って,昇順にソートする必要があります。

compar によって示される比較関数に 2 つの引数が渡されます。 2 つの引数は比較するオブジェクトを示します。最初の引数が 2 番目の引数より小さいか,等しいか,大きいかに応じて,比較関数は 0 より小さい整数,0,0 より大きい引数を返さなければなりません。

比較関数 (compar) が配列内のすべてのバイトを比較する必要はありません。したがって,配列内のオブジェクトには,比較するデータの他に任意のデータを格納することができます。

返される値は pointer-to-void 型として宣言されるため, pointer-to-object 型にキャストされるかまたは割り当てられなければなりません。




戻り値

x 配列内で一致するメンバを指すポインタ。一致するメンバが見つからない場合はヌル・ポインタ。
NULL キーが配列から見つからなかったことを示します。





 
#include <stdio.h> 
#include <stdlib.h> 
 
#define SSIZE 30 
 
extern int compare();  /* prototype for comparison function */ 
 
int array[SSIZE] = {30, 1, 29, 2, 28, 3, 27, 4, 26, 5, 
                    24, 6, 23, 7, 22, 8, 21, 9, 20, 10, 
                    19, 11, 18, 12, 17, 13, 16, 14, 15, 25}; 
 
/*  This program takes an unsorted array, sorts it using qsort, */ 
/*  and then calls bsearch for each element in the array,       */ 
/*  making sure that bsearch returns the correct element.       */ 
 
main() 
{ 
    int i; 
    int failure = FALSE; 
    int *rkey; 
 
    qsort(array, SSIZE, sizeof (array[0]), &compare); 
 
    /* search for each element */ 
    for (i = 0; i < SSIZE - 1; i++) { 
        /* search array element i */ 
        rkey = bsearch((array + i), array, SSIZE, 
                        sizeof(array[0]), &compare); 
        /* check for successful search */ 
        if (&array[i] != rkey) { 
            printf("Not in array, array element %d\n", i); 
            failure = TRUE; 
            break; 
        } 
    } 
    if (!failure) 
        printf("All elements successfully found!\n"); 
} 
 
/*  Simple comparison routine.  */ 
/*                              */ 
/*  Returns:  = 0 if a == b     */ 
/*            < 0 if a < b      */ 
/*            > 0 if a > b      */ 
 
int compare(int *a, int *b) 
{ 
    return (*a - *b); 
} 

このサンプル・プログラムでは,次の出力が生成されます。


All elements successfully found! 




btowc

初期シフト状態で 1 バイトのマルチバイト文字をワイド文字に変換します。



形式

#include <wchar.h>

wint_t btowc (int c);




引数



c

ワイド文字表現に変換する文字。



説明

btowc関数は, ( unsigned char)c が初期シフト状態で有効な 1 バイトのマルチバイト文字であるかどうかを確認し,有効である場合は,その文字のワイド文字表現を返します。



戻り値

x unsigned char c のワイド文字表現。
WEOF エラーを示します。 c 引数の値が EOF であるか,または初期シフト状態で有効な 1 バイトのマルチバイト文字でありません。




bzero

ヌル文字をバイト列にコピーします。



形式

#include <strings.h>

void bzero (void *string, size_t length);




引数



string

ヌル文字のコピー先のバイト列を指定します。

length

文字列の長さ (バイト数) を指定します。



説明

bzero関数は,ヌル文字 ('\0') を length バイトだけ, string によって示されるバイト列にコピーします。 length が 0 の場合は,バイトはコピーされません。



cabs

複素数の絶対値を返します。



形式

#include <math.h>

double cabs (cabs_t z);

float cabsf (cabsf_t z); (Alpha, I64)

long double cabsl (cabsl_t z); (Alpha, I64)




引数



z

cabs_t型, cabsf_t型,または cabsl_t型の構造体。これらの型は次に示すように, <math.h>ヘッダ・ファイルに定義されています。


typedef struct {double x,y;} cabs_t; 
typedef struct { float x, y; } cabsf_t;  (Alpha, I64)  
typedef struct { long double x, y; } cabsl_t;  (Alpha, I64)  




説明

cabs関数は, 2 点間のユークリッド距離をそれぞれの 2 乗の平方根として計算することにより,複素数の絶対値を返します。


sqrt(x2 + y2) 

オーバフローが発生した場合,戻り値は未定義です。

cabs関数, cabsf関数, cabsl関数はそれぞれ, hypot関数, hypotf関数, hypotl関数と同じです。




cacos (Alpha, I64)

引数 (複素数) の逆余弦を返します。



形式

#include <complex.h>

double complex cacos (double complex z);

float complex cacosf (float complex z);

long double complex cacosl (long double complex z);




引数



z

複素数値。



説明

cacos関数は,実軸上の区間 [ - 1, +1] の外側に分岐線法を適用して,複素数 z の逆余弦を計算します。



戻り値

n 複素数の逆余弦値。この値は,虚軸上では数学的に無限の範囲,また実軸上では区間 [0, π] の範囲からなる帯状の領域にあります。




cacosh (Alpha, I64)

引数 (複素数) の双曲線逆余弦を返します。



形式

#include <complex.h>

double complex cacosh (double complex z);

float complex cacoshf (float complex z);

long double complex cacoshl (long double complex z);




引数



z

複素数値。



説明

cacosh関数は,実軸上の 1 より小さい値に分岐線法を適用して,複素数 z の双曲線逆余弦を計算します。



戻り値

n 複素数の双曲線逆余弦値。この値は,実軸上では値が負でない範囲,また虚軸上では区間 [ - iπ, +iπ] の範囲からなる帯状の領域にあります。




calloc

0 に初期化されたメモリ領域を割り当てます。この関数は AST リエントラントです。



形式

#include <stdlib.h>

void *calloc (size_t number, size_t size);

関数バリアント calloc関数には, _calloc32および _calloc64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。


引数



number

割り当てる項目の数。

size

各項目のサイズ。



説明

calloc関数は項目を 0 に初期化します。

mallocreallocも参照してください。




戻り値

x クォドワード境界 (Alpha only) またはオクタワード境界 (I64 only) にそろえられた最初のバイトのアドレス。
NULL 領域を割り当てることができないことを示します。




carg (Alpha, I64)

引数 (複素数) の位相角を返します。



形式

#include <complex.h>

double carg (double complex z);

float cargf (float complex z);

long double cargl (long double complex z);




引数



z

複素数値。



説明

carg関数は,実軸上の負の領域に分岐線法を適用して, z の位相角 (偏角ともいいます) を計算します。



戻り値

n z の位相角値。この値は区間 [ - π, +π] の範囲にあります。




casin (Alpha, I64)

引数 (複素数) の逆正弦を返します。



形式

#include <complex.h>

double complex casin (double complex z);

float complex casinf (float complex z);

long double complex casinl (long double complex z);




引数



z

複素数値。



説明

casin関数は,実軸上の区間 [ - 1, +1] の外側に分岐線法を適用して,複素数 z の逆正弦を計算します。



戻り値

n 複素数の逆正弦値。この値は,虚軸では数学的に無限の範囲,また実軸上では区間 [-π/2, +π/2] の範囲からなる帯状の領域にあります。




casinh (Alpha, I64)

引数 (複素数) の双曲線逆正弦を返します。



形式

#include <complex.h>

double complex casinh (double complex z);

float complex casinhf (float complex z);

long double complex casinhl (long double complex z);




引数



z

複素数値。



説明

casinh関数は,虚軸上の区間 [ - i, +i] の外側に分岐線法を適用して,複素数 z の双曲線逆正弦を計算します。



戻り値

n 複素数の双曲線逆正弦値。この値は,実軸上では数学的に無限の範囲,また虚軸上では区間 [ - iπ/2, +iπ/2] の範囲からなる帯状の領域にあります。




catan (Alpha, I64)

引数 (複素数) の逆正接を返します。



形式

#include <complex.h>

double complex catan (double complex z);

float complex catanf (float complex z);

long double complex catanl (long double complex z);




引数



z

複素数値。



説明

catan関数は,虚軸上の区間 [ - i, +i] の外側に分岐線法を適用して,複素数 z の逆正接を計算します。



戻り値

n 複素数の逆正接値。この値は,虚軸上では数学的に無限の範囲,また実軸上では区間 [-π/2, +π/2] の範囲からなる帯状の領域にあります。




catanh (Alpha, I64)

引数 (複素数) の双曲線逆正接を返します。



形式

#include <complex.h>

double complex catanh (double complex z);

float complex catanhf (float complex z);

long double complex catanhl (long double complex z);




引数



z

複素数値。



説明

catanh関数は,虚軸上の区間 [ - 1, +1] の外側に分岐線法を適用して,複素数 z の双曲線逆正接を計算します。



戻り値

n 複素数の双曲線逆正接値。この値は,実軸上では数学的に無限の範囲,また虚軸上では区間 [ - iπ/2, +iπ/2] の範囲からなる帯状の領域にあります。




catclose

メッセージ・カタログをクローズします。



形式

#include <nl_types.h>

int catclose (nl_catd catd);




引数



catd

メッセージ・カタログ記述子。この記述子は, catopen の呼び出しが正常終了したときに返されます。



説明

catclose関数は,catd によって参照されるメッセージ・カタログをクローズし,カタログ・ファイル記述子の割り当てを解除します。



戻り値

0 カタログが正しくクローズされたことを示します。
-1    エラーが発生したことを示します。 errno は次の値に設定されます。

  • EBADF---カタログ記述子が不正です。




catgets

メッセージ・カタログからメッセージを取得します。



形式

#include <nl_types.h>

char *catgets (nl_catd catd, int set_id, int msg_id, const char *s);

関数バリアント catgets関数には, _catgets32および _catgets64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。


引数



catd

メッセージ・カタログ記述子。この記述子は, catopen の呼び出しが正常終了したときに返されます。

set_id

整数のセット識別子。

msg_id

整数のメッセージ識別子。

s

メッセージを取得できないときに関数から返されるデフォルトのメッセージ文字列を指すポインタ。



説明

catgets関数は,メッセージ・カタログ catd から, set_idmsg_id によって示されるメッセージを取得します。メッセージは nl_catd構造体のメッセージ・バッファに格納されます。 catgets を再び呼び出すと,格納されているメッセージは上書きされます。メッセージ文字列を保存する必要がある場合は,プログラムで別の場所にコピーしてください。



戻り値

x 取得したメッセージを指すポインタ。
s デフォルト・メッセージ文字列を指すポインタ。関数が要求されたメッセージをカタログから取得できなかったことを示します。指定された引数の組み合わせ ( set_d, msg_id) がオープンされているカタログで既存のメッセージを表さない場合は,この条件が発生することがあります。また,エラーが発生したことを示す場合もあります。エラーが発生した場合は,この関数は errno を次のいずれかの値に設定します。

  • EBADF---カタログ記述子が不正です。

  • EVMSRR---OpenVMS I/O 読み込みエラー。 OpenVMS エラー・コードは vaxc$errno に格納されています。





#include <nl_types.h> 
#include <locale.h> 
#include <stdarg.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <unixio.h> 
 
 /* This test makes use of all the message catalog routines. catopen  */ 
 /* opens the catalog ready for reading, then each of the three       */ 
 /* messages in the catalog are extracted in turn using catgets and   */ 
 /* printed out. catclose closes the catalog after use.               */ 
 /* The catalog source file used to create the catalog is as follows: */ 
 /* $ This is a message file 
  * $ 
  * $quote " 
  * $ another comment line 
  * $set 1 
  * 1 "First set, first message" 
  * 2 "second message - This long message uses a backslash \
  * for continuation." 
  * $set 2 
  * 1 "Second set, first message"                                      */ 
 
char *default_msg = "this is the first message."; 
 
main() 
{ 
  nl_catd catalog; 
  int msg1, 
      msg2, 
      retval; 
 
  char *cat = "sys$disk:[]catgets_example.cat"; /*Force local catalog*/ 
 
  char *msgtxt; 
 
  char string[128]; 
 
  /* Create the message test catalog */ 
 
  system("gencat catgets_example.msgx catgets_example.cat") ; 
 
  if ((catalog = catopen(cat, 0)) == (nl_catd) - 1) { 
      perror("catopen"); 
      exit(EXIT_FAILURE); 
  } 
 
  msgtxt = catgets(catalog, 1, 1, default_msg); 
  printf("%s\n", msgtxt); 
 
  msgtxt = catgets(catalog, 1, 2, default_msg); 
  printf("%s\n", msgtxt); 
 
  msgtxt = catgets(catalog, 2, 1, default_msg); 
  printf("%s\n", msgtxt); 
 
  if ((retval = catclose(catalog)) == -1) { 
      perror("catclose"); 
      exit(EXIT_FAILURE); 
  } 
 
  delete("catgets_example.cat;") ;  /* Remove the test catalog */ 
} 

このサンプル・プログラムを実行すると,次の結果が生成されます。


First set, first message 
second message - This long message uses a backslash for continuation. 
Second set, first message 


前へ 次へ 目次 索引



         印刷用画面へ

プライバシー 本サイト利用時の合意事項