STRING(3) — UNIX Programmer’s Manual
名称
strcat, strncat, strcmp, strncmp, strcpy, strncpy, strlen, index, rindex strchr, strrchr, strpbrk, strspn, strcspn, strtok − 文字列操作
形式
#include <strings.h>
char ∗strcat(s1, s2)
char ∗s1, ∗s2;
char ∗strncat(s1, s2, n)
char ∗s1, ∗s2;
strcmp(s1, s2)
unsigned char ∗s1, ∗s2;
strncmp(s1, s2, n)
unsigned char ∗s1, ∗s2;
char ∗strcpy(s1, s2)
char ∗s1, ∗s2;
char ∗strncpy(s1, s2, n)
char ∗s1, ∗s2;
strlen(s)
char ∗s;
char ∗index(s, c)
char ∗s, c;
char ∗rindex(s, c)
char ∗s, c;
#include <string.h>
char ∗strchr(s, c)
char ∗s, c;
char ∗strrchr(s, c)
char ∗s, c;
char ∗strpbrk(s1, s2)
char ∗s1, ∗s2;
int strspn(s1, s2)
char ∗s1, ∗s2;
int strcspn(s1, s2)
char ∗s1, s2;
char ∗strtok(s1, s2)
char ∗s1, s2;
解説
これらの関数はナル文字で終了する文字列を操作します。 これらは受け取り側の文字列のオーバーフローについて全くチェックしません。
strcat は文字列 s1 の終わりに文字列 s2 のコピーを付け加えます。 また、 strncat は最大 n 文字をコピーします。両者ともナル文字で終了する結果へのポインタを返します。
strcmp はその引数を比較し、 s1 が s2 より辞書的に大きいか、等しいか、それとも小さいかによって 0 より大きい、0、または 0 より小さい整数値を返します。 strncmp も同様の比較をしますが、最大 n 文字までを調べるようになっています。
strcpy は文字列 s2 を s1 にコピーします。この処理はナル文字がコピーされると終了します。 また、 strncpy は s2 を切り捨てるかナル文字を追加するかして、ちょうど n 文字をコピーします。 s2 が n 文字以上の場合、ターゲットはナル文字で終了しないことがあります。 両者とも s1 を返します。
strlen はナル文字以外の s の文字数を返します。
index (rindex) は文字列 s の中で最初(最後)に現れる文字 c を指すポインタを返します。 c がその文字列にない場合、ゼロを返します。
文字列を終了させるナル文字は、その文字列の1部と見なされます。
strchr (strrchr) は index (rindex) と同じ働きをします。 単に名前が違うだけです。
strpbrk は s2 の中に含まれるキャラクタ(文字)と一致するキャラクタ(文字)が s1 内にある場合は、最初に一致するキャラクタ(文字)へのポインタを返し、 無い場合にはナルポインタを返します。
strspn (strcspn) は s1 の中で s2 に含まれるキャラクタ(文字)だけからできている(strcspn の場合には含まれない) 最初に見つかった部分の長さを返します。
strtok では s1 をトークンとトークン間に s2 に含まれる文字が任意個(0 でもよい) 挟まれている文字列とみなします。 最初にこの関数が呼ばれたとき(ポインタは s1 の先頭をさします) 最初のトークンの最初の文字へのポインタを返し、 そのトークンの後ろにナルを書きます。 この関数は常にポインタの位置を覚えているので、 その次からの呼びだし(このとき s1 にはナルを指定せねばなりません)も s1 全部のトークンに対してうまく働きます。 このようにして s1 内のトークン全部に対して作用します。このときにコールの度に s2 を変えても構いません。 s1 にトークンがなくなるとナルを返します。
注意
1strcmp と strncmp は、マシンに依存しますので、 他のマシンでは、正しく動作しないかもしれません。
2C では、NULL ポインタが常にナル文字列を指すわけではないので、 ナル文字列 "" の代わりに NULL ポインタを使ってはいけません。
3キャラクタの移動は、インプリメントごとに異なるので、 重なりの生じる移動では、思いどおりにならないかもしれません。
NEWS-OSRelease 3.3