Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ strrchr(3) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

STRING(3)  —  NEWS-OS Programmer’s Manual

名称

strcat, strncat, strcmp, strncmp, strcasecmp, strncasecmp, strcpy, strncpy, strlen, index, rindex, strchr, strrchr, strpbrk, strspn, strcspn, strtok, strstr, strdup − 文字列操作

形式

#include <string.h>

char ∗strcat(s1, s2)
char ∗s1, ∗s2;

char ∗strncat(s1, s2, n)
char ∗s1, ∗s2;
int n;

strcmp(s1, s2)
char ∗s1, ∗s2;

strncmp(s1, s2, n)
char ∗s1, ∗s2;
int n;

strcasecmp(s1, s2)
char ∗s1, ∗s2;

strncasecmp(s1, s2, n)
char ∗s1, ∗s2;
int n;

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;

char ∗strchr(s, c)
char ∗s;
int c;

char ∗strrchr(s, c)
char ∗s;
int 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;

char ∗strstr(s1, s2)
char ∗s1, ∗s2;

char ∗strdup(s)
char ∗s;

解説

これらの関数はナル文字で終了する文字列を操作します。 これらは受け取り側の文字列のオーバーフローについて 全くチェックしません。

strcat は、文字列 s1 の終わりに文字列 s2 のコピーを付け加えます。 また、 strncat は、最大 n 文字をコピーします。 両者ともナル文字で終了する結果へのポインタを返します。

strcmp は、その引数を unsigned char の文字列として比較し、 s1 が s2 より辞書的配列で大きいか、等しいか、それとも小さいかによって 0 より大きい、0、または 0 より小さい整数値を返します。 strncmp も同様の比較をしますが、最大 n 文字までを調べるようになっています。

strcasecmp と strncasecmp も同様に引数を比較しますが、大文字/小文字の区別をしません。 辞書的配列の大きさの違いは、小文字に変換され、返されます。

strcpy は、文字列 s2 を s1 にコピーします。この処理はナル文字がコピーされると終了します。 また、 strncpy は、 s2 を切り捨てるかナル文字を追加するかして、ちょうど n 文字をコピーします。 s2 が n 文字以上の場合、ターゲットはナル文字で終了しないことがあります。 両者とも s1 を返します。

strlen は、ナル文字以外の s の文字数を返します。

index (rindex) は、文字列 s の中で最初 (最後) に現れる文字 c を指すポインタを返します。 c がその文字列にない場合、NULL ポインタを返します。 文字列を終了させるナル文字は、その文字列の一部と見なされます。

strchr (strrchr) は、 index (rindex) と同じ働きをします。 単に名前が違うだけです。

strpbrk は、 s2 の中に含まれる文字と一致する文字が s1 内にある場合は、最初に一致する文字へのポインタを返し、 無い場合には NULL ポインタを返します。

strspn (strcspn) は、 s1 の中で s2 に含まれる文字だけからできている (strcspn の場合には含まれない) 最初に見つかった部分の長さを返します。

strtok では s1 をトークンとトークン間に s2 に含まれる文字が任意個 (0 でもよい) 挟まれている文字列とみなします。 最初にこの関数が呼ばれたとき (ポインタは s1 の先頭を指します) 最初のトークンの最初の文字へのポインタを返し、 そのトークンの後ろにナルを書きます。 この関数は常にポインタの位置を覚えているので、 その次からの呼び出し (このとき s1 にはナルを指定せねばなりません) も s1 全部のトークンに対してうまく働きます。 このようにして s1 内のトークン全部に対して作用します。このときにコールのたびに s2 を変えても構いません。 s1 にトークンが無くなると、 NULL ポインタを返します。

strstr は、文字列 s1 の中で最初に現れる文字列 s2 を指すポインタを返します。 s2 がその文字列にない場合、NULL ポインタを返します。

strdup は、文字列 s の複製を新たに作って、その文字列を指すポインタを返します。 その文字列の領域は、 malloc(3) によって確保されます。 新しい文字列が作成できない場合は、NULL ポインタを返します。

注意事項

1strcmp と strncmp は、マシンに依存しますので、 他のマシンでは、正しく動作しないかもしれません。

2C では、NULL ポインタが常にナル文字列を指すわけではないので、 ナル文字列 "" の代わりに NULL ポインタを使ってはいけません。

3文字列の移動は、インプリメントごとに異なるので、 重なりの生じる移動では、思いどおりにならないかもしれません。

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026