前へ | 次へ | 目次 | 索引 |
新しい動作を有効にするためには,アプリケーションを呼び出す前に, DECC$EFS_FILE_TIMESTAMPS 論理名を明示的に "ENABLE" に定義する必要があります。この論理名を設定しても, ODS-2 デバイス上のファイルに対する stat, fstat, utime,および utimesの動作には影響はありません。
0 成功を示します。 - 1 特権違反以外のエラーを示します。 errno はエラーを示す値に設定されます。 - 2 特権違反を示します。
2 つの 7 ビット ASCII 文字列の,大文字小文字を区別しない比較を行います。
#include <strings.h>int strcasecmp (const char *s1, const char *s2);
s1
比較する 2 つの文字列のうちの第 1 のものs2
比較する 2 つの文字列のうちの第 2 のもの
strcasecmp関数は大文字小文字を区別しません。返される字句的な違いは,小文字に変換されています。strcasecmp関数は 7 ビット ASCII の比較のみを行います。国際化されたアプリケーションでは,この関数は使用しないようにしてください。
n s1 文字列が s2 文字列よりも大きい,等しい,または小さい場合に,それぞれ 0 よりも大きい,等しい,または小さい整数値。
str_1 の末尾に,終端の null 文字を含めて str_2 を連結します。
#include <string.h>関数バリアント strcat関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strcat32と _strcat64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *strcat (char *str_1, const char *str_2);
str_1, str_2
null で終了する文字列へのポインタ。
strncatを参照してください。
x 第 1 引数 str_1 のアドレス。これは連結された結果を保持できるだけの大きさを持つと仮定されます。
#include <string.h> #include <stdio.h> /* This program concatenates two strings using the strcat */ /* function, and then manually compares the result of strcat */ /* to the expected result. */ #define S1LENGTH 10 #define S2LENGTH 8 main() { static char s1buf[S1LENGTH + S2LENGTH] = "abcmnexyz"; static char s2buf[] = " orthis"; static char test1[] = "abcmnexyz orthis"; int i; char *status; /* Take static buffer s1buf, concatenate static buffer */ /* s2buf to it, and compare the answer in s1buf with the */ /* static answer in test1. */ status = strcat(s1buf, s2buf); for (i = 0; i <= S1LENGTH + S2LENGTH - 2; i++) { /* Check for correct returned string. */ if (test1[i] != s1buf[i]) printf("error in strcat"); } }
null で終了する文字列の中の,指定された文字の最初のオカレンスのアドレスを返します。終端の null 文字は,文字列の一部と見なされます。
#include <string.h>関数バリアント strchr関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strchr32と _strchr64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *strchr (const char *str, int character);
str
null で終了する文字列へのポインタ。character
int型のオブジェクト。
strrchrを参照してください。
x 指定された文字の最初のオカレンスのアドレス。 NULL 文字列の中に文字が含まれていないことを示します。
#include <stdio.h> #include <string.h> main() { static char s1buf[] = "abcdefghijkl lkjihgfedcba"; int i; char *status; /* This program checks the strchr function by incrementally */ /* going through a string that ascends to the middle and then */ /* descends towards the end. */ for (i = 0; s1buf[i] != '\0' && s1buf[i] != ' '; i++) { status = strchr(s1buf, s1buf[i]); /* Check for pointer to leftmost character - test 1. */ if (status != &s1buf[i]) printf("error in strchr"); } }
2 つの ASCII 文字列を比較し,第 1 の文字列の個々の文字の ASCII 値が第 2 の文字列の値よりも小さいか,等しいか,大きいことを示す負の整数,0,または正の整数を返します。
#include <string.h>int strcmp (const char *str_1, const char *str_2);
str_1, str_2
文字列へのポインタ。
文字列の比較は,null 文字が検出されるか,文字列に違いが発見されるまで行われます。
< 0 str_1 が str_2 よりも小さいことを示します。 = 0 str_1 が str_2 と等しいことを示します。 > 0 str_1 が str_2 よりも大きいことを示します。
2 つの文字列を比較し,文字列が異なるかどうか,またどのように異なるかを示す整数を返します。この関数は,現在のロケールの LC_COLLATE カテゴリの照合情報を使用して,比較の実行方法を決定します。
#include <string.h>int strcoll (const char *s1, const char *s2);
s1, s2
文字列へのポインタ。
strcoll関数は, strcmpとは異なり, 2 つの文字列をロケールに依存した方法で比較します。エラー条件のための値は予約されていないので,アプリケーションは関数呼び出しの前に errnoを 0 に設定し,呼び出しの後にその値をテストすることでチェックを行う必要があります。strxfrmも参照してください。
< 0 s1 が s2 よりも小さいことを示します。 = 0 文字列が等しいことを示します。 > 0 s1 が s2 よりも大きいことを示します。
終端の null 文字も含む source のすべての内容を dest にコピーします。
#include <string.h>関数バリアント strcpy関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strcpy32と _strcpy64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *strcpy (char *dest, const char *source);
dest
デスティネーション文字列へのポインタ。source
ソース文字列へのポインタ。
strcpy関数は, source を dest にコピーし, source の null 文字をコピーした後に停止します。dest がポイントする領域が source がポイントする領域とオーバラップしている場合,この関数の動作は未定義です。
x dest のアドレス。
指定された文字セットに含まれていない文字のみから構成される文字列の接頭辞の長さを返します。
#include <string.h>size_t strcspn (const char *str, const char *charset);
str
文字列へのポインタ。この文字列が null 文字列だった場合には,0 が返されます。charset
文字のセットを含んだ文字列へのポインタ。
strcspn関数は,文字列内の文字をスキャンし, charset に含まれる文字を検出した時点で停止し, charset に含まれない文字から構成される文字列の先頭のセグメントの長さを返します。str と charset がポイントする文字列のどの文字も一致しない場合, strcspnは文字列の長さを返します。
x セグメントの長さ。
重複する文字列を発見し,ポイントします。
#include <string.h>関数バリアント strdup関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strdup32と _strdup64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *strdup (const char *s1);
s1
比較する 2 つの文字列のうちの第 1 のもの。
strdup関数は,s1 がポイントする文字列の正確な複製である文字列へのポインタを返します。新しい文字列のためのスペースの割り当てには malloc関数が使用されます。 strdup 関数は,既存のシステムとの互換性のために用意されています。
x 結果として得られる文字列へのポインタ。 NULL エラーを示します。
error_code の中のエラー番号を,ロケール依存のエラー・メッセージ文字列にマップします。
#include <string.h>char *strerror (int error_code); (ANSI C)
char *strerror (int error_code[, int vms_error_code]); (HP C Extension)
error_code
エラー・コード。vms_error_code
OpenVMS エラー・コード。
strerror関数は, error_code の中のエラー番号を使用して,適切なロケール依存のエラー・メッセージを取得します。エラー・メッセージ文字列の内容は,プログラムの現在のロケールの LC_MESSAGES カテゴリによって決定されます。プログラムが標準関連の機能テスト・マクロ ( 『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.5.1 項を参照 ) を指定せずにコンパイルされた場合, strerrorは以下のように使用される第 2 の引数 (vms_error_code) を取ります。
- error_code が EVMSERR で,第 2 引数が存在する場合には,その第 2 引数が vaxc$errno値として使用される。
- error_code が EVMSERR で,第 2 引数が存在しない場合には, vaxc$errnoを参照して OpenVMS エラー条件を取得する。
「例」の項を参照してください。
第 2 の引数は, strerrorの ANSI C の定義には含まれていないので,移植性はありません。
エラーを示す戻り値は予約されていないため,アプリケーションは errnoの値を 0 に設定した後に strerrorを呼び出し, errnoの値をテストしなくてはなりません。ゼロ以外の値はエラー条件を示します。
x 該当するエラー・メッセージを含んでいるバッファへのポインタ。プログラム内でこのバッファを変更しないでください。また, strerror 関数の呼び出しにより,このバッファは新しいメッセージで上書きされることがあります。
#include <stdio.h> #include <errno.h> #include <string.h> #include <stdlib.h> #include <ssdef.h> main() { puts(strerror(EVMSERR)); errno = EVMSERR; vaxc$errno = SS$_LINKEXIT; puts(strerror(errno)); puts(strerror(EVMSERR, SS$_ABORT)); exit(1); }
この例のプログラムを実行すると,次の出力が生成されます。
nontranslatable vms error code: <none> network partner exited abort |
金額値を文字列に変換します。変換は書式文字列によって制御されます。
#include <monetary.h>ssize_t strfmon (char *s, size_t maxsize, const char *format, ...);
s
結果として得られる文字列へのポインタ。maxsize
結果として得られる文字列に格納される最大バイト数。format
出力文字列の書式を制御する文字列へのポインタ。...
出力文字列へと整形される double型の金額値。 format がポイントする書式文字列の中の変換指定と同じ数の値がなくてはなりません。値が足りなかった場合,関数は実行に失敗します。余分な引数は無視されます。
strfmon関数は,指定された金額値を使用して, s がポイントする文字列を作成します。最高 maxsize バイトが s にコピーされます。format がポイントする書式文字列は,通常の文字と変換指定から構成されています。すべての通常の文字は,変更なしに出力文字列にコピーされます。変換指定は,指定された金額値の 1 つが,出力文字列でどのように整形されるかを定義します。
変換指定は,パーセント文字 (%),いくつかのオプションの文字 ( 表 REF-5 を参照 ),および変換指定子 ( 表 REF-6 を参照 ) から構成されます。
表 REF-5 に示しているオプション文字が変換指定に含まれる場合,それらの文字は表に示した順序で現れなくてはなりません。
表 REF-5 strfmon の変換指定に含まれるオプションの文字 文字 意味 = character 小数点以上の桁数を指定した場合に, character を数値フィル文字として使用する。デフォルトの数値フィル文字はスペース文字である。フィル文字は,有効桁数と幅のカウントに対応できるように, 1 バイトとして表現できなくてはならない。この変換指定子は,小数点以上の桁数が指定されなかった場合には無視される。また,幅のフィルはつねにスペース文字を使用するので,この変換指定子の影響を受けない。 ^ 数値の書式指定に区切り文字を使用しない。デフォルトでは,桁は現在のロケールの LC_MONETARY カテゴリの mon_grouping フィールドに従ってグループ化される。 + 現在のロケールの positive_sign または negative_sign フィールドで指定された文字列を追加する。 p_sign_posn または n_sign_posn が 0 に設定されている場合,デフォルトでは負の値を示すために括弧が使用される。それ以外の場合には,符号文字列が値の符号を示すために使用される。同じ変換指定で + と ( を同時に使用することはできない。 ( 負の値を括弧で囲む。デフォルトの設定には,現在のロケールの p_sign_posn または n_sign_posn フィールドが使用される。 p_sign_posn または n_sign_posn が 0 に設定されている場合,デフォルトでは負の値を示すために括弧が使用される。それ以外の場合には,符号文字列が値の符号を示すために使用される。同じ変換指定で + と ( を同時に使用することはできない。 ! 通貨シンボルを抑止する。デフォルトでは,通貨シンボルが追加される。 -- フィールド内で値を左揃えにする。デフォルトでは,値は右揃えになる。 フィールド幅 変換の結果の位置を揃えるときに使用される最小のフィールド幅を指定する 10 進整数。デフォルトのフィールド幅は,結果を格納できる最も小さいフィールドである。 #left_precision # の後の 10 進整数は,小数点以上の桁数を指定する。余った桁はフィル文字によって埋められる。デフォルトでは,引数に必要な最小限の桁数が使用される。 ^ 変換指定子でグループ化が抑止されておらず,現在のロケールでグループ化が定義されていた場合には,フィル文字が追加される前にグループ化の区切り文字が挿入される。グループ化の区切り文字は,フィル文字が数字として定義されている場合でも,フィル文字には適用されない。 .right_precision ピリオド (.) の後の 10 進整数は,小数点以下の桁数を指定する。余分な桁はゼロで埋められる。値はこの小数点以下の桁数にまで丸められる。小数点以下の桁数がゼロである場合,出力には小数点は含められない。デフォルトでは,小数点以下の桁数は現在のロケールの frac_digits または int_frac_digits フィールドによって定義される。
表 REF-6 strfmon の変換指定子 指定子 意味 i 通貨シンボルが抑止されていなければ,現在のロケールの int_currency_symbol フィールドによって定義されている国際通貨シンボルを使用する。 n 通貨シンボルが抑止されていなければ,現在のロケールの currency_symbol フィールドによって定義されているローカル通貨シンボルを使用する。 % % 文字を出力する。変換指定は %% でなくてはならない。この指定子では,どのオプション文字も使用できない。
x s がポイントする文字列に書き込まれるバイト数。終端の null 文字は含みません。 - 1 エラーを示します。関数は errno を以下のいずれかの値に設定します。
- EINVAL---変換指定の構文が間違っている。
- E2BIG---書式文字列全体を処理すると,出力が maxsize バイトを超える。
#include <stdlib.h> #include <stdio.h> #include <locale.h> #include <monetary.h> #include <errno.h> #define MAX_BUF_SIZE 124 main() { size_t ret; char buffer[MAX_BUF_SIZE]; double amount = 102593421; /* Display a monetary amount using the en_US.ISO8859-1 */ /* locale and a range of different display formats. */ if (setlocale(LC_ALL, "en_US.ISO8859-1") == (char *) NULL) { perror("setlocale"); exit(EXIT_FAILURE); } ret = strfmon(buffer, MAX_BUF_SIZE, "International: %i\n", amount); printf(buffer); ret = strfmon(buffer, MAX_BUF_SIZE, "National: %n\n", amount); printf(buffer); ret = strfmon(buffer, MAX_BUF_SIZE, "National: %=*#10n\n", amount); printf(buffer); ret = strfmon(buffer, MAX_BUF_SIZE, "National: %(n\n", -1 * amount); printf(buffer); ret = strfmon(buffer, MAX_BUF_SIZE, "National: %^!n\n", amount); printf(buffer); }
前へ | 次へ | 目次 | 索引 |