前へ | 次へ | 目次 | 索引 |
mbstate_tオブジェクトが初期変換状態を記述しているかどうかを判定します。
#include <wchar.h>int mbsinit (const mbstate_t *ps);
ps
mbstate_tオブジェクトへのポインタ。 mbstate_tは,状態依存のコードセットのための変換状態を保持する目的に使われる不透明のデータ型です。
ps が NULL ポインタでない場合, mbsinit関数は, ps がポイントする mbstate_tオブジェクトが初期変換状態を記述しているかどうかを判定します。ゼロの mbstate_tオブジェクトは,つねに初期変換状態を記述しています。
ゼロ以外 ps 引数が NULL ポインタであるか, ps がポイントする mbstate_t オブジェクトが初期変換状態を記述しています。 0 ps がポイントする mbstate_t オブジェクトは初期変換状態を記述していません。
マルチバイト文字のシーケンスを,対応するワイド文字コードのシーケンスに変換します。
#include <wchar.h>関数バリアント mbsrtowcs関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _mbsrtowcs32と _mbsrtowcs64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。size_t mbsrtowcs (wchar_t *dst, const char **src, size_t len, mbstate_t *ps);
dst
結果として得られるワイド文字コードのシーケンスが格納されるデスティネーション配列へのポインタ。src
変換するマルチバイト文字のシーケンスを含んだ配列へのポインタのアドレス。len
dst がポイントする配列に格納できるワイド文字コードの数の最大値。ps
mbstate_tオブジェクトへのポインタ。 NULL ポインタが指定された場合,関数は内部の mbstate_tオブジェクトを使用します。 mbstate_tは,状態依存のコードセットのための変換状態を保持する目的に使われる不透明のデータ型です。
mbsrtowcs関数は, ps がポイントするオブジェクトが記述している変換状態から開始して, src が間接的にポイントしている配列に含まれているマルチバイト文字のシーケンスを,対応するワイド文字のシーケンスに変換します。dst が NULL ポインタでなければ,変換後の文字は dst がポイントする配列に格納されます。変換は末尾の null 文字まで行われ,この null 文字も格納されます。
以下のいずれかの理由が生じた場合,変換は途中で停止します。
- 有効なマルチバイト文字を構成しないバイトのシーケンスを検出した。
- dst が NULL ポインタでない場合, dst がポイントする配列に len 個のコードが格納された。
dst が NULL ポインタでない場合, src がポイントするポインタ・オブジェクトには, NULL ポインタが代入されるか ( 末尾の null ワイド文字に達したために変換が停止した場合 ),または最後に変換されたマルチバイト文字 ( 存在する場合 ) の直後のアドレスが代入されます。末尾の null ワイド文字に達したために変換が停止した場合,結果として得られる状態は初期変換状態です。
n 変換に成功したマルチバイト文字の数。末尾の null は ( 存在する場合でも ) 含みません。 - 1 エラーを示します。有効なマルチバイト文字を構成しないバイトのシーケンスが現れました。 errno は EILSEQ に設定されます。変換状態は未定義です。
メモリ領域内の文字列の間で,文字を順次コピーします。
#include <string.h>関数バリアント memccpy関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _memccpy32と _memccpy64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。void *memccpy (void *dest, void *source, int c, size_t n);
dest
デスティネーション文字列の位置へのポインタ。source
ソース文字列の位置へのポインタ。c
検索したい文字。n
コピーしたい文字数。
memccpy関数は,メモリ領域内の文字列に作用します。メモリ領域とは,カウントによって制限され,null 文字で終了しない,連続した文字のグループです。この関数は,コピー先のメモリ領域でのオーバフローをチェックしません。 memccpy関数は <string.h>ヘッダ・ファイルに定義されています。memccpy関数は,source がポイントする位置から,以下のいずれかが起こるまで, dest がポイントする位置へと文字を順次コピーします。
- c で指定された文字 ( unsigned charに変換) のコピーが終了した。
- nで指定された数の文字のコピーが終了した。
x dest がポイントする文字列の中の, c で指定される文字の後の文字へのポインタ。 NULL エラーを示します。文字列の中で n 個の文字をスキャンしても,文字 c は発見されませんでした。
指定されたオブジェクトの最初の size バイト内で,指定されたバイトの最初のオカレンスを発見します。
#include <string.h>関数バリアント memchr関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _memchr32と _memchr64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。void *memchr (const void *s1, int c, size_t size);
s1
検索するオブジェクトへのポインタ。c
検索するバイト値。size
検索するオブジェクトの長さ。size がゼロの場合, memchrは NULL を返します。
strchrとは異なり, memchr関数は null 文字が現れても停止しません。
ポインタ バイトの最初のオカレンスへのポインタ。 NULL 指定されたバイトがオブジェクト内に含まれていなかったことを示します。
2 つのオブジェクトをバイト単位で比較します。比較操作は,各オブジェクトの最初のバイトから開始されます。
#include <string.h>int memcmp (const void *s1, const void *s2, size_t size);
s1
第 1 のオブジェクトへのポインタ。s2
第 2 のオブジェクトへのポインタ。size
比較するオブジェクトの長さ。size がゼロの場合,2 つのオブジェクトは等しいものと見なされます。
memcmp関数はネイティブなバイト比較を使用します。返される値の符号は,比較されるオブジェクトの中の,最初の異なるバイトの値を比較したときに得られる符号によって決定されます。 strcmp関数とは異なり, memcmp関数は null 文字が現れても停止しません。
x 負の整数,0,または正の整数。それぞれ,第 1 のオブジェクトの文字値が第 2 のオブジェクトの文字値よりも小さい,等しい,または大きい場合に対応します。
オブジェクト間で指定された数のバイトをコピーします。
#include <string.h>関数バリアント memcpy関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _memcpy32と _memcpy64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。void *memcpy (void *dest, const void *source, size_t size);
dest
デスティネーション・オブジェクトへのポインタ。source
ソース・オブジェクトへのポインタ。size
コピーするオブジェクトの長さ。
memcpy関数は, source がポイントするオブジェクトから, dest がポイントするオブジェクトに, size 個のバイトをコピーします。コピー先のメモリ領域 (dest) のオーバフローのチェックは行いません。 strcpy関数とは異なり, memcpy関数は null 文字が現れても停止しません。
x dest の値。
オブジェクト間で指定された数のバイトをコピーします。
#include <string.h>関数バリアント memmove関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _memmove32と _memmove64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。void *memmove (void *dest, const void *source, size_t size);
dest
デスティネーション・オブジェクトへのポインタ。source
ソース・オブジェクトへのポインタ。size
コピーするオブジェクトの長さ。
HP C for OpenVMS システムでは, memmoveと memcpyは同じ機能を実行します。移植性が必要なプログラムは,dest がポイントする領域が, source がポイントする領域とオーバラップする可能性がある場合は, memmoveを使用するようにしてください。
x dest の値。
#include <string.h> #include <stdio.h> main() { char pdest[14] = "hello there"; char *psource = "you are there"; memmove(pdest, psource, 7); printf("%s\n", pdest); }
この例は,次の出力を生成します。
you are there
指定されたオブジェクト内の指定されたバイト数を,指定された値に設定します。
#include <string.h>関数バリアント memset関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _memset32と _memset64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。void *memset (void *s, int value, size_t size);
s
配列ポインタ。value
s に格納する値。size
s に格納するバイト数。
memset関数は, value ( unsigned charに変換) を, s がポイントするオブジェクトの最初の size個の文字のそれぞれにコピーします。この関数は s を返します。s がポイントするコピー先のメモリ領域のオーバフローのチェックは行いません。
x s の値。
ディレクトリを作成します。
#include <stat.h>int mkdir (const char *dir_spec, mode_t mode); (ISO POSIX-1)
int mkdir (const char *dir_spec, mode_t mode, ...); (HP C Extension)
dir_spec
有効な OpenVMS または UNIX スタイルのディレクトリ指定。デバイス名を含むことができます。次に例を示します。
DBA0:[BAY.WINDOWS] /* OpenVMS */ /dba0/bay/windows /* UNIX style */
この指定は,ノード名,ファイル名,ファイル・タイプ,ファイル・バージョン,またはワイルドカード文字を含むことはできません。同じ制約が,UNIX スタイルのディレクトリ指定にも適用されます。 UNIX スタイルの指定の制約については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1 章を参照してください。
mode
ファイル保護。具体的なファイル保護の情報については,このセクションの chmod関数を参照してください。新しいディレクトリのファイル保護は,mode 引数,プロセスのファイル保護マスク ( umask関数を参照),および親ディレクトリのデフォルトの保護から決定されます。
OpenVMS におけるディレクトリ作成の動作と同様に, mkdirはディレクトリに対して決して削除アクセスを適用しません。削除アクセスを設定する必要があるアプリケーションは, chmodを明示的に呼び出して,書き込み許可を設定するようにしてください。
新しく作成されたディレクトリのファイル保護がどのように設定されるかについては,この関数の説明のセクションを参照してください。
...
以下のオプションの引数を表します。これらの引数は,引数リストの中での位置が固定されており,適当な位置に置くことはできません。unsigned int uic
作成されるディレクトリのオーナを識別する利用者識別コード (UIC)。この引数が 0 の場合, HP C RTL は,作成されたディレクトリに,親ディレクトリの UIC を与えます。この引数が指定されなかった場合, HP C RTL は作成されたディレクトリにユーザの UIC を与えます。このオプションの引数は HP C RTL に固有のものであり,移植性はありません。
unsigned short max_versions
作成されたディレクトリに保持されるファイル・バージョンの数の最大値。システムはディレクトリを自動的にパージして,各ファイルを最高で max_versions 個しか保持しません。
この引数が 0 の場合, HP C RTL はファイル・バージョンの数に上限を設けません。
この引数が指定されなかった場合, HP C RTL は作成されたディレクトリに,親ディレクトリのデフォルトのバージョン制限を設定します。
このオプションの引数は HP C RTL に固有のものであり,移植性はありません。
unsigned short r_v_number
デバイスがボリューム・セットの一部である場合,作成されたディレクトリを配置するボリューム (デバイス)。この引数が指定されなかった場合, HP C RTL は作成されたディレクトリをボリューム・セット内に適当に配置します。このオプションの引数は HP C RTL に固有のものであり,移植性はありません。
dir_spec が,存在しないディレクトリを含んだパスを指定していた場合には,中間のディレクトリも作成されます。 UNIX システムでは,これらの中間ディレクトリは存在していなくてはならず,自動的に作成されることはありません。オプションの引数を 1 つも指定しなかった場合, HP C RTL はディレクトリにユーザの UIC と親ディレクトリのデフォルトのバージョン制限を設定し,ボリューム・セット内で適当にディレクトリを配置します。何らかの引数を指定した場合,uic 引数と max_versions 引数のデフォルト値は設定されません。
注意
UNIX システム・コール関数 umask, mkdir, creat,および openを使って, OpenVMS RMS デフォルト保護を指定してファイルを作成するには, umaskを直接呼び出さないプログラムから, 0777 のファイル保護モード引数を使用して mkdir, creat,および openを呼び出します。これらのデフォルト保護では,ACL やファイルの前のバージョンなどに基づいて,保護が正しく設定されます。vfork/ exec呼び出しを行うプログラムでは,新しいプロセス・イメージは, umaskが呼び出されたかどうかの状態を,呼び出し元のプロセス・イメージから継承します。 umask設定と, umask関数が呼び出されたかどうかの状態は,どちらも属性として継承されます。
mode 引数で指定されるファイル保護は,新しいディレクトリのファイル保護が mode 引数とファイル保護マスクの補数のビット論理積に設定されるように,プロセスのファイル保護マスクによって変更されます。
新しいディレクトリには,ゼロの保護値ビットが親ディレクトリから継承されるような形で,親ディレクトリからデフォルトのファイル保護が継承されます。ただし,親ディレクトリのファイル保護の中の,削除アクセスを示すビットは,新しいディレクトリのファイル保護の中の対応するビットには継承されません。
0 成功を示します。 - 1 失敗を示します。
#1 |
---|
umask (0002); /* turn world write access off */ mkdir ("sys$disk:[.parentdir.childdir]", 0222); /* turn write access on */ Parent directory file protection: System:RWD, Owner:RWD, Group:R, World:R |
モード引数と, umaskによって設定されたファイル保護マスクの組み合わせから得られるファイル保護は,(0222) & ~(0002),すなわち 0220 です。この保護に親ディレクトリのデフォルト値が適用されると,新しいディレクトリの保護は次のようになります。
File protection: System:RWD, Owner:RWD, Group:RWD, World:R
#2 |
---|
umask (0000); mkdir ("sys$disk:[.parentdir.childdir]", 0444); /* turn read access on */ Parent directory file protection: System:RWD, Owner:RWD, Group:RWD, World:RWD |
前へ 次へ 目次 索引