Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

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 − 文字列操作

形式

#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;

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

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

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 文字までを調べるようになっています。

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

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 4.1C

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