tctype.h
にもどるbitop.h
にすすむ
標準 C の <string.h>
に相当し、
TRON で扱う 2 バイト文字に対応したマクロおよび関数群である。
文字コードの単位が 2 バイトである以外は
"tc_"
をはずした名前の1バイト用関数の
ANSI 仕様に従う。
EUCコード、シフトJISコードとの文字(列)変換関数も含んでいる。
なお、取り扱う文字列に言語指定コードが含まれていてもそのまま取り扱うため、 特に文字列長の取り扱いに関しては注意が必要である (言語指定コードの分も含んだ領域の確保などの必要がある)。
|
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()
|
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* 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* 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* 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* 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
個コピーするか、
src
に TNULL
文字が検出された時点でコピーを終了する。
src
の長さが TRON 文字 len
個分より小さい場合、
tc_strncpy
は TRON 文字 len
個に達するまで dest
に TNULL
文字をパディングする。
dest
の指すメモリ領域が src
で指す
TRON 文字列と重複している場合、tc_strncpy()
の動作は未定義である。
tc_strcpy()
|
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
を越えて書き込みが行われた場合の結果は未定義である。
|
W tc_strlen(TC *str)
TC *str TRON 文字列
≧0 TRON 文字数(TNULL は除く)
str
で指定した TRON 文字列の文字数を戻す。
TNULL
が現われるまでのバイト数を 2 で割った値に等しい。
|
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* tc_strrchr(TC *str, int ch)
TC *str TRON 文字列へのポインタ int ch 検索 TRON 文字
≠ NULL ch の存在位置(ポインタ) = NULL 該当文字なし
文字 ch
を文字列 str
の末尾から先頭に向かって検索し、
最初に見つかったアドレスを戻す。
tc_strchr()
は str
の先頭で検索を終了する。
null
文字も検索の対象となる。
tc_strchr()
|
int tc_atoi(const TC *str)
TC *str TRON 文字列へのポインタ
整数値
str
で指定した TRON
文字列の先頭から 10 進数値を意味する部分までを int
型に変換した値を返す。
str
は符号が付く場合があり、
任意個の数字を含む。また文字列の始めにある空白を無視する。
最初の符号文字を除いて数字以外の文字を読み込んだ段階で走査を終了する。
変換結果が表現不能な TRON 文字列
str
が指定された場合の結果は未定義である。
tc_atol(),tc_strtol()
|
long tc_atol(const TC *str)
TC *str 変換対象文字列へのポインタ
変換結果
str
を TRON 文字例による数値並びと解釈し、
文字列の先頭から 10 進数値を意味する部分までを
long
型に変換した値を返す。
str
は符号が付く場合があり、
任意個の数字を含む。また文字列の始めにある空白を無視する。
最初の符号文字を除いて数字以外の文字を読み込んだ段階で走査を終了する。
変換結果が表現不能な文字列 str
が指定された場合の結果は未定義である。
tc_atoi(),tc_strtol()
|
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
に末尾部先頭へのポインタを格納する。
base
が 0 の場合8進定数 | 0177, +077 |
10進定数 | 123, -256 |
16進定数 | 0x1d8c, 0X2C7B |
base
が 1 の場合base
が 2 〜 36 の場合base
を基数とする英数字が有効となる。
英字 A 〜 Z 及び a 〜 z は 10 〜 35 に割り当てられる。u,U,l,L
) は認識不能である。base
が 16 の場合
[+/-][0x/0X][数字文字列]と記述しても良い。
tc_atoi(),tc_atol()
|
W euctotc(TC *tc, B *euc)
TC *str 変換結果の文字列へのポインタ B *euc 変換対象のEUC文字列へのポインタ
= 1 または 2 変換したバイト数 = 0 euc が空文字列である場合 = -1 変換できない
euc
の領域の EUC 1 文字を
TC 1 文字に変換して tc
に格納する。
変換したバイト数 ( 1 または 2 ) を関数値として戻す。
tc
が TNULL
の時は、
変換結果は格納しないが正しい関数値を戻す。
tctoeuc(),eucstotcs(),tcstoeucs()
|
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()
|
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()
|
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* tc_gets(TC *str)
TC *str 入力文字列格納先領域へのポインタ
= str 入力文字列格納先へのポインタ = NULL ファイルの終了、またはエラー
標準入力から TRON 文字列を読み込み str
に格納する。
標準入力で文字列の終了とみなす箇所は以下 2 通りである。
改行文字を文字列終了とした場合、
改行文字は捨てられ、s
にはその代りに空白文字 NULL
を付加する。
tc_puts()
|
W tc_puts(TC *str)
TC *str 出力文字列へのポインタ
= -1 エラー > 0 正常終了
str
で指定した TRON 文字列を出力する。
標準出力に str
で指定された TRON 文字列を書く。
文字列の終了となる空白文字 TNULL
は書かれず、代りに改行文字が付加される。
tc_gets()
|
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()
|
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 ) を関数値として返す。
sj
が NULL
の時は、
関数値だけが戻り、結果を格納しない。
sjtotc(),sjstotcs(),tcstosjs()
|
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()
|
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()
tctype.h
にもどるbitop.h
にすすむ