tail head cat sleep
QR code linking to this page

manページ  — STRSEP

名称

strsep – 文字列の分割

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <string.h>

char *
strsep(char **stringp, const char *delim);

解説

strsep() 関数は、 *stringp により参照される文字列の中で、文字列 delim 中のいずれかの文字 (または終端の ‘\0’ ) のうちで最初に出現する文字の位置を探し、その箇所を ‘\0’ で置き換えます。 区切り文字 (または文字列の末尾に達した場合は NULL ) の次の文字の位置は、 *stringp に格納されます。 *stringp の元の値は戻り値となります。

「空」のフィールド、すなわち、 2 つの隣接する区切り文字によって生じたフィールドは、 *stringp の中に返されたポインタが参照する位置を ‘\0’ と比較することで検出可能です。

*stringp が最初から NULL である場合は、 strsep() NULL を返します。

以下では、 空白文字によって区切られたトークンで構成されている文字列を、 引数ベクタへと解釈するために strsep() を使っています。
char **ap, *argv[10], *inputstring;

for (ap = argv; (*ap = strsep(&inputstring, " \t")) != NULL;) if (**ap != '\0') if (++ap >= &argv[10]) break;

関連項目

memchr(3), strchr(3), strcspn(3), strpbrk(3), strrchr(3), strspn(3), strstr(3), strtok(3)

歴史

strsep() 関数は、 strtok() 関数を置き換えるものとして考えられています。 strtok() 関数は移植性の点では好ましいのですが ( ISO/IEC 9899:1990 ("ISO C90") に適合しています) 、 空のフィールドを扱う、すなわち、 2 つの隣接する区切り文字によって区切られたフィールドを検出するとか、 一回で複数の文字列に対して使用する、といったことができません。 strsep() 関数は、 BSD 4.4 で初めて登場しました。

STRSEP (3) June 9, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

UNIX has been evolving feverishly for close to 30 years, sort of like bacteria in a cesspool — only not as attractive
— John Levine, "Unix for Dummies"