この章の目次にもどる
前頁:1.17 tctype.h にもどる
次頁:1.19 bitop.h にすすむ

1.18 tstring.h

標準 C の <string.h> に相当し、 TRON で扱う 2 バイト文字に対応したマクロおよび関数群である。 文字コードの単位が 2 バイトである以外は "tc_" をはずした名前の1バイト用関数の ANSI 仕様に従う。 EUCコード、シフトJISコードとの文字(列)変換関数も含んでいる。

なお、取り扱う文字列に言語指定コードが含まれていてもそのまま取り扱うため、 特に文字列長の取り扱いに関しては注意が必要である (言語指定コードの分も含んだ領域の確保などの必要がある)。

tc_strcmp
 
TRON文字列の比較

【形式】

W   tc_strcmp(TC *s1, TC *s2)

【パラメータ】

TC  *s1, *s2    比較する TRON 文字列へのポインタ

【リターン値】

= 0  内容が一致した
> 0   最初に異なった文字を見ると s1 側が s2 側より大きい
< 0   最初に異なった文字を見ると s1 側が s2 側より小さい

【解説】

2 個の TRON 文字列の内容が一致しているか否かを返す。

tc_strcmp() は 2 個の文字列が異なるまで TRON 文字 1 個ずつ比較する。 s1 のある文字が s2 の対応する文字よりも大きい ( 文字コード表で後ろにある ) 場合には正の値を返す。 文字列の最後まで同じコードしか見つからなかった場合には、 文字列が等しいとみなす。

tc_strcmp()TNULL を検出した時点で止まる。

【参照】

tc_strncmp()

tc_strncmp
 
TRON文字列の比較

【形式】

W   tc_strncmp(TC *s1, TC *s2, W len)

【パラメータ】

TC  *s1, *s2    比較する TRON 文字列へのポインタ
W        len    TRON 文字数

【リターン値】

= 0  内容が一致した
> 0   最初に異なった文字を見ると s1 側が s2 側より大きい
< 0   最初に異なった文字を見ると s1 側が s2 側より小さい

【解説】

2 個の TRON 文字列の、 TRON 文字 len 個分の内容が一致しているか否かを返す。

tc_strncmp() は 2 個の TRON 文字列が異なるまで 1 TRON 文字ずつ TRON 文字を len 個になるまで比較する。 s1 のある文字が s2 の対応する文字よりも大きい ( 文字コード表で後ろにある ) 場合には正の値を返す。 比較は len バイトを比較するか、 どちらかの TRON 文字列で TNULL 文字を検出した段階で終了する。 TNULL 文字は tc_strncmp() が終わる前に比較される。 比較の最後まで同じコードしか見つからなかった場合には、 TRON 文字列が等しいとみなす。

【参照】

tc_strcmp()

tc_strcat
 
TRON文字列の連結

【形式】

TC* tc_strcat(TC *dest, TC *src)

【パラメータ】

TC  *dest   連結先の TRON 文字列へのポインタ
TC  *src    追加する TRON 文字列へのポインタ

【リターン値】

= dest       連結先文字列へのポインタ

【解説】

dest で指定した TRON 文字列の最後に src を連結する。

src 末尾の TNULL 文字まで含めた全文字を dest の指す TRON 文字列の最後にコピーする。 引数 dest の末尾の TNULL 文字には src の最初の文字を重ねてコピーする。

dest は連結後の TRON 文字列が保持できるサイズをあらかじめ用意しておかなければならない。

dest の最後を越えて書き込んでしまった場合の動作と、 src 及び dest が重複していた場合の動作は未定義である。

【参照】

tc_strncat()


tc_strncat
 
TRON文字列の連結

【形式】

TC* tc_strncat(TC *dest, TC *src, W len)

【パラメータ】

TC    *dest   連結先の TRON 文字列へのポインタ
TC    *src    追加する TRON 文字列へのポインタ
W     len     連結する TRON 文字数

【リターン値】

= dest       連結先文字列へのポインタ

【解説】

dest で指定した TRON 文字列の最後に src の先頭から TRON 文字を len 個分付加する。

src 末尾の TNULL 文字まで含めた全文字を dest の指す TRON 文字列の最後にコピーする。 引数 dest の末尾の TNULL 文字には src の最初の文字を重ねて TRON 文字 len 個分コピーし、 最後に TNULL 文字を付加する。 src が TRON 文字 len 個より短い場合には TNULL 文字まで含めて src が指す TRON 文字列を dest に付加する。

destは、連結後の TRON 文字列が保持できるサイズをあらかじめ用意しておかなければならない。

dest の最後を越えて書き込んでしまった場合の動作と、 src 及び dest が重複していた場合の動作は未定義である。

【参照】

tc_strcat()

tc_strcpy
 
TRON文字列のコピー

【形式】

TC* tc_strcpy(TC *dest, TC *src)

【パラメータ】

TC  *dest   コピー先の TRON 文字列へのポインタ
TC  *src    コピー元の TRON 文字列へのポインタ

【リターン値】

= dest       移動先 TRON 文字列へのポインタ

【解説】

dest で指す領域に src で指す TRON 文字列を TNULL 文字まで含めてコピーする。

dest の指すメモリ領域が src で指す TRON 文字列と重複している場合、 strcpy() の動作は未定義である。


【参照】

tc_strncpy()

tc_strncpy
 
TRON文字列のコピー

【形式】

TC* tc_strncpy(TC *dest, TC *src, W len)

【パラメータ】

TC  *dest   コピー先の TRON 文字列へのポインタ
TC  *src    コピー元の TRON 文字列へのポインタ
W    len    コピーする TRON 文字数

【リターン値】

= dest       移動先 TRON 文字列へのポインタ

【解説】

src で指定した TRON 文字列を最大 len 文字だけ dest にコピーする。
戻値として dest を返す。
dest はコピーした結果を格納できるサイズをあらかじめ確保しておかなければならない。

dest で指す領域に src で指す TRON 文字列を、TRON 文字 len 個分コピーして TNULL 文字を付加する。

TNULL 文字を len 個コピーするか、 srcTNULL 文字が検出された時点でコピーを終了する。

src の長さが TRON 文字 len 個分より小さい場合、 tc_strncpy は TRON 文字 len 個に達するまで destTNULL 文字をパディングする。

dest の指すメモリ領域が src で指す TRON 文字列と重複している場合、tc_strncpy() の動作は未定義である。

【参照】

tc_strcpy()

tc_strset
 
TRON文字の初期化

【形式】

TC* tc_strset(TC *str, TC ch, W len)

【パラメータ】

TC  *str    初期化対象 TRON 文字列へのポインタ
TC    ch    初期化 TRON 文字
W    len    設定 TRON 文字数

【リターン値】

= dest       初期化領域へのポインタ

【解説】

str で指定した領域の先頭から len 文字を ch で埋める。
戻値として str を返す。
str が指す領域の先頭から TRON 文字 len 個分を ch で埋める。

確保されている領域 str を越えて書き込みが行われた場合の結果は未定義である。

【参照】

tc_strlen
 
TRON文字列の長さ獲得

【形式】

W   tc_strlen(TC *str)

【パラメータ】

TC  *str    TRON 文字列

【リターン値】

≧0 TRON 文字数(TNULL は除く)

【解説】

str で指定した TRON 文字列の文字数を戻す。

TNULL が現われるまでのバイト数を 2 で割った値に等しい。

【参照】

tc_strchr
 
TRON文字列中の文字検索

【形式】

TC* tc_strchr(TC *str, int ch)

【パラメータ】

TC  *str    TRON 文字列へのポインタ
int   ch    検索 TRON 文字

【リターン値】

≠ NULL    ch の存在位置(ポインタ)
= NULL    該当 TRON 文字なし

【解説】

指定文字列の先頭から対象の TRON 文字を検索し、発見したらそのポインタを返す。

tc_strchr()TNULL 文字で検索を終了する。

TNULL 文字も検索の対象となる。

【参照】

tc_strrchr()

tc_strrchr
 
TRON文字列中の文字検索

【形式】

TC* tc_strrchr(TC *str, int ch)

【パラメータ】

TC  *str    TRON 文字列へのポインタ
int   ch    検索 TRON 文字

【リターン値】

≠ NULL  ch の存在位置(ポインタ)
= NULL  該当文字なし

【解説】

文字 ch を文字列 str の末尾から先頭に向かって検索し、 最初に見つかったアドレスを戻す。

tc_strchr()str の先頭で検索を終了する。

null 文字も検索の対象となる。

【参照】

tc_strchr()

tc_atoi
 
TRON文字列の整数変換

【形式】

int tc_atoi(const TC *str)

【パラメータ】

TC  *str    TRON 文字列へのポインタ

【リターン値】

整数値

【解説】

str で指定した TRON 文字列の先頭から 10 進数値を意味する部分までを int 型に変換した値を返す。

str は符号が付く場合があり、 任意個の数字を含む。また文字列の始めにある空白を無視する。 最初の符号文字を除いて数字以外の文字を読み込んだ段階で走査を終了する。

変換結果が表現不能な TRON 文字列 str が指定された場合の結果は未定義である。

【参照】

tc_atol(),tc_strtol()

tc_atol
 
TRON文字列の整数変換

【形式】

long    tc_atol(const TC *str)

【パラメータ】

TC  *str    変換対象文字列へのポインタ

【リターン値】

変換結果

【解説】

str を TRON 文字例による数値並びと解釈し、 文字列の先頭から 10 進数値を意味する部分までを long 型に変換した値を返す。

str は符号が付く場合があり、 任意個の数字を含む。また文字列の始めにある空白を無視する。 最初の符号文字を除いて数字以外の文字を読み込んだ段階で走査を終了する。

変換結果が表現不能な文字列 str が指定された場合の結果は未定義である。

【参照】

tc_atoi(),tc_strtol()

tc_strtol
 
TRON文字列の整数変換

【形式】

long    tc_strtol(const TC *str, TC **tail, int base)

【パラメータ】

TC  *str    変換対象 TRON 文字列へのポインタ
TC  **tail  解釈終了位置(アドレス)を格納するポインタ変数
int base    基数

【リターン値】

= 0          数値構成ができなかった
= LONG_MAX   結果数値が表現範囲を超えた(最大値より大きい)
= LONG_MIN   結果数値が表現範囲を超えた(最小値より小さい)
その他        長整数値(変換結果)

【解説】

str が指す TRON 文字列により示された値を long に変換した結果の値を返す。

strtol()str の指す TRON 文字列を読み込み、開始部・本体・末尾部の 3 つの部分に分ける。

開始部は文字列先頭の空白文字類である。

本体は符号文字、数字または基数指定 base によって数字として読み込まれることになる文字から構成される。 TNULL 文字を検出した時点、または基数指定 base によって設定された数字以外の文字を検出した時点で本体は終了する。

末尾部は本体終了直後から TNULL 文字までである。

tc_strtol() は開始部を無視し、 本体を long 型数値に変換し、TNULL でない tail に末尾部先頭へのポインタを格納する。

□整数文字列の形式

  1. base が 0 の場合
    8、10、16進整数定数とみなす。
     8進定数0177, +077
    10進定数 123, -256
    16進定数 0x1d8c, 0X2C7B
  2. base が 1 の場合
    0のみ有効。
  3. base が 2 〜 36 の場合
    base を基数とする英数字が有効となる。 英字 A 〜 Z 及び a 〜 z は 10 〜 35 に割り当てられる。
    符号は認識されるが、 整数接尾後 ( u,U,l,L ) は認識不能である。
    base が 16 の場合
        [+/-][0x/0X][数字文字列]
    
    と記述しても良い。

【参照】

tc_atoi(),tc_atol()


euctotc
 
EUCからTRON文字への変換

【形式】

W   euctotc(TC *tc, B *euc)

【パラメータ】

TC  *str    変換結果の文字列へのポインタ
B   *euc    変換対象のEUC文字列へのポインタ

【リターン値】

=  1 または 2 変換したバイト数
=  0          euc が空文字列である場合
= -1          変換できない

【解説】

euc の領域の EUC 1 文字を TC 1 文字に変換して tc に格納する。

変換したバイト数 ( 1 または 2 ) を関数値として戻す。

tcTNULL の時は、 変換結果は格納しないが正しい関数値を戻す。

【参照】

tctoeuc(),eucstotcs(),tcstoeucs()

tctoeuc
 
TRON文字からEUCへの変換

【形式】

W   tctoeuc(B *euc, TC tc)

【パラメータ】

B    *euc   EUC 文字を格納する領域
TC   tc     変換対象の TRON 文字

【リターン値】

=  1 または 2 変換したバイト数
=  0          tc がTNULLである場合
= -1          変換できない

【解説】

TRON 文字コードの 1 文字を EUC の 1 文字に変換して euc に格納する。

変換したバイト数 ( 1 または 2 ) を関数値として戻す。

euc が NULL の時は、 変換結果は格納しないが正しい関数値を戻す。

【参照】

euctotc(),eucstotcs(),tcstoeucs()

eucstotcs
 
EUC文字列からTRON文字列への変換

【形式】

W   eucstotcs(TC *tcstr, B* eucstr)

【パラメータ】

TC  *tcstr  変換結果の TRON 文字列格納先ポインタ
B   *eucstr 変換対象の EUC 文字列へのポインタ

【リターン値】

≧  0  変換した TRON 文字列の長さ
= -1  変換できない

【解説】

EUC 文字列を TRON 文字列に変換し、 その TRON 文字列長 ( = tc_strlen(tcstr) ) を返す。

tcstr == NULL の時は、 変換結果は格納しないが正しい関数値を戻す。


【参照】

euctotc(),tctoeuc(),tcstoeucs()

tcstoeucs
 
TRON文字列からEUC文字列への変換

【形式】

W   tcstoeucs(B* eucstr, TC* tcstr)

【パラメータ】

B   *eucstr 変換結果の EUC 文字列格納先ポインタ
TC  *tcstr  変換対象の TRON 文字列へのポインタ

【リターン値】

≧  0  変換した EUC 文字列の長さ
= -1  変換できない

【解説】

TRON 文字列を EUC 文字列に変換し、 その EUC 文字列長 ( =strlen(eucstr) ) を返す。

eucstr == NULL の時は、 変換結果は格納しないが正しい関数値を戻す。

【参照】

euctotc(),tctoeuc(),eucstotcs()

tc_gets
 
TRON文字列入力

【形式】

TC* tc_gets(TC *str)

【パラメータ】

TC  *str    入力文字列格納先領域へのポインタ

【リターン値】

= str        入力文字列格納先へのポインタ
= NULL       ファイルの終了、またはエラー

【解説】

標準入力から TRON 文字列を読み込み str に格納する。

標準入力で文字列の終了とみなす箇所は以下 2 通りである。

改行文字を文字列終了とした場合、 改行文字は捨てられ、s にはその代りに空白文字 NULL を付加する。

【参照】

tc_puts()

tc_puts
 
TRON文字列出力

【形式】

W   tc_puts(TC *str)

【パラメータ】

TC  *str    出力文字列へのポインタ

【リターン値】

= -1     エラー
>  0     正常終了

【解説】

str で指定した TRON 文字列を出力する。

標準出力に str で指定された TRON 文字列を書く。

文字列の終了となる空白文字 TNULL は書かれず、代りに改行文字が付加される。


【参照】

tc_gets()

sjtotc
 
Shift-JIS文字からTRON文字への変換

【形式】

W   sjtotc(TC *tc, UB *sj)

【パラメータ】

TC  *tc  変換結果格納変数へのポインタ
UB  *sj  変換対象の Shift-JIS 文字

【リターン値】

=  0   sj が空(sj の先頭が null 文字)
=  1   変換対象が1バイト Shift-JIS 文字の場合(ただし1バイト仮名文字を除く)
=  2   変換対象が2バイト Shift-JIS 文字の場合
= -1   変換できない

【解説】

sj の領域の Shift-JIS 1 文字を TRON 文字に変換して tc に格納する。

変換対象になった Shift-JIS 文字のバイト数を関数値として戻す。

tc が NULL の時は、関数値だけが戻り、結果を格納しない。

1 バイト仮名文字は変換しない。


【参照】

sjtotc(),tctosj(),sjstotcs(),tcstosjs()

tctosj
 
TRON文字からShift-JIS文字への変換

【形式】

W   tctosj(UB *sj, TC *tc)

【パラメータ】

UB  *sj 変換結果の Shift-JIS 文字を格納する変数へのポインタ
TC  *tc 変換対象の TRON 文字列へのポインタ

【リターン値】

=  1 または 2  変換 TCODE 文字数
=  0           tc が空(tc の先頭が TNULL)
= -1           変換できない

【解説】

TC の 1 文字を Shift-JIS の 1 文字に変換して sj に格納する。

変換したバイト数 ( 1 または 2 ) を関数値として返す。

sjNULL の時は、 関数値だけが戻り、結果を格納しない。

【参照】

sjtotc(),sjstotcs(),tcstosjs()

sjstotcs
 
Shift-JIS文字列からTRON文字列への変換

【形式】

W   sjstotcs(TC *tcstr, UB* sjstr)

【パラメータ】

TC  *tc 変換結果のTRON文字列を格納するバッファ
UB  *sj 変換対象のShift-JIS文字列へのポインタ

【リターン値】

≧  0     変換 Shift-JIS 文字数
= -1     変換できない場合

【解説】

Shift-JIS 文字列を TRON 文字列に変換し、 その TRON 文字列の長さ ( = tc_strlen(tcstr) ) を戻す。

tcstr == NULL の時は、 変換結果は格納しないが正しい関数値を戻す。

【参照】

sjtotc(),tctosj(),tcstosjs()



tcstosjs
 
TRON文字列からShift-JIS文字列への変換

【形式】

W   tcstosjs(UB* sjstr, TC* tcstr)

【パラメータ】

TC  *tc 変換結果の Shift-JIS 文字列を格納するバッファ
UB  *sj 変換対象の TRON 文字列。

【リターン値】

≧  0     変換 TRON 文字数
= -1     変換できない場合

【解説】

TRON 文字列を Shift-JIS 文字列に変換する。

変換した Shift-JIS 文字列の長さ ( = strlen(sjstr) ) を戻す。

sjstr == NULL の時は、 変換結果は格納しないが正しい関数値を戻す。

【参照】

sjtotc(),tctosj(),sjstotcs()



この章の目次にもどる
前頁:1.17 tctype.h にもどる
次頁:1.19 bitop.h にすすむ