OSDN Git Service

(split) LDP: Update release pages
[linuxjm/LDP_man-pages.git] / release / man3 / strtok.3
index 7dafe2e..a400eb0 100644 (file)
@@ -1,5 +1,6 @@
-.\" Copyright (C) 1996 Andries Brouwer (aeb@cwi.nl)
-.\" and Copyright (C) 2005 Michael Kerrisk (mtk.manpages@gmail.com)
+.\" Copyright (C) 2005, 2013 Michael Kerrisk (mtk.manpages@gmail.com)
+.\" a few fragments from an earlier (1996) version by
+.\" Andries Brouwer (aeb@cwi.nl) remain.
 .\"
 .\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" Rewritten old page, 960210, aeb@cwi.nl
 .\" Updated, added strtok_r. 2000-02-13 Nicolás Lichtmaier <nick@debian.org>
 .\" 2005-11-17, mtk: Substantial parts rewritten
+.\" 2013-05-19, mtk: added much further detail on the operation of strtok()
 .\"
 .\"*******************************************************************
 .\"
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH STRTOK 3 2012\-05\-10 GNU "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 1998 Ishii Tatsuo all rights reserved.
+.\" Translated 1998-03-27, Ishii Tatsuo <rfun@azusa.shinshu-u.ac.jp>
+.\" Updated 2000-04-05, Kentaro Shirakata <argrath@ub32.org>
+.\" Updated 2000-09-21, Kentaro Shirakata
+.\" Updated 2002-03-28, Kentaro Shirakata
+.\" Updated 2005-11-19, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-07-22, Akihiro MOTOKI <amotoki@gmail.com>
+.\" Updated 2013-07-31, Akihiro MOTOKI <amotoki@gmail.com>
+.\"
+.TH STRTOK 3 2013\-05\-19 GNU "Linux Programmer's Manual"
 .SH 名前
 strtok, strtok_r \- 文字列からトークンを取り出す
 .SH 書式
@@ -53,8 +66,9 @@ glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参
 _XOPEN_SOURCE || _POSIX_SOURCE
 .ad b
 .SH 説明
-\fBstrtok\fP()  関数は文字列を解析してトークンに分割する。 \fBstrtok\fP()  を最初に呼び出す際には、解析対象の文字列を \fIstr\fP
-に 指定する。同じ文字列の解析を行うその後の呼び出しでは、 \fIstr\fP には NULL を指定する。
+\fBstrtok\fP()  関数は文字列を 0 個以上の空でないトークンの列に分割する。 \fBstrtok\fP()
+を最初に呼び出す際には、解析対象の文字列を \fIstr\fP に 指定する。同じ文字列の解析を行うその後の呼び出しでは、 \fIstr\fP は NULL
+にしなければならない。
 
 \fIdelim\fP 引き数には、解析対象の文字列をトークンに区切るのに使用する
 バイト集合を指定する。同じ文字列を解析する一連の呼び出しにおいて、
@@ -64,12 +78,23 @@ _XOPEN_SOURCE || _POSIX_SOURCE
 された文字列へのポインタが返される。この文字列には区切りバイトは含まれ
 ない。これ以上トークンが見つからなかった場合には、NULL が返される。
 
-解析対象の文字列に 2 つ以上の区切りバイトが連続している場合には、
-一つの区切りバイトとみなされる。 文字列の先頭や末尾にある区切りバイトは
-無視される。言い換えると、 \fBstrtok\fP() が返すトークンは必ず空でない
-文字列となる。
+同じ文字列に対して操作を行う \fBstrtok\fP() を連続して呼び出す場合、 次のトークンを探し始める位置を決めるためのポインタが保持される。 最初の
+\fBstrtok\fP の呼び出しでは、 このポインタは対象の文字列の最初のバイトにセットされる。 次のトークンの先頭は、 \fIstr\fP
+内で次の区切りバイト以外のバイトを前方に検索して決定される。 区切りバイト以外のバイトが見つからなかった場合は、 トークンはこれ以上なく、
+\fBstrtok\fP() は NULL を返す (したがって、 空の文字列や区切りバイトだけを含む文字列の場合には、 最初の \fBstrtok\fP()
+の呼び出しで NULL が返ることになる)。
+
+各トークンの末尾は、次の区切りバイトが見つかるか、終端の NULL バイト (\(aq\e0\(aq)
+に達するまで文字列を前方に検索することで見つかる。 区切りバイトが見つかった場合には、 現在のトークンの終わりを示すために、 見つかった区切りバイトが
+NULL バイトで上書きされ、 \fBstrtok\fP() はポインタを次のバイトに設定する。
+このポインタは、次のトークンを検索する際の開始点として使用される。 この場合、 \fBstrtok\fP() は見つかったトークンの先頭へのポインタを返す。
+
+上記の説明の通り、 解析対象の文字列に 2 つ以上の区切りバイトが連続している場合には、 一つの区切りバイトとみなされ、
+文字列の先頭や末尾にある区切りバイトは無視される。 言い換えると、 \fBstrtok\fP() が返すトークンは必ず空でない文字列となる。
+したがって、例えば "\fIaaa;;bbb,\fP" という文字列が与えられたとすると、 区切り文字列 "\fI;,\fP" を指定した一連の
+\fBstrtok\fP() の呼び出しでは、 "\fIaaa\fP" と \fIbbb\fP" が返り、その次に NULL ポインタが返る。
 
-\fBstrtok_r\fP()  関数は \fBstrtok\fP()  のリエントラント版である。 \fIsaveptr\fP 引き数は \fIchar *\fP
+\fBstrtok_r\fP()  関数は \fBstrtok\fP()  のリエントラント版である。 \fIsaveptr\fP 引き数は \fIchar\ *\fP
 変数へのポインタであり、 同じ文字列の解析を行う \fBstrtok_r\fP()  の呼び出し間で処理状況を保存するために \fBstrtok_r\fP()
 内部で使用される。
 
@@ -80,6 +105,11 @@ _XOPEN_SOURCE || _POSIX_SOURCE
 \fBstrtok_r\fP()  の呼び出し時に異なる \fIsaveptr\fP 引き数を指定することで、 異なる文字列の解析を同時に行うことができる。
 .SH 返り値
 \fBstrtok\fP()  と \fBstrtok_r\fP()  は次のトークンへのポインタか、 トークンがなければ NULL を返す。
+.SH 属性
+.SS "マルチスレッディング (pthreads(7) 参照)"
+The \fBstrtok\fP() 関数はスレッドセーフではない。
+.LP
+\fBstrtok_r\fP() 関数はスレッドセーフである。
 .SH 準拠
 .TP 
 \fBstrtok\fP()
@@ -164,6 +194,6 @@ main(int argc, char *argv[])
 \fBindex\fP(3), \fBmemchr\fP(3), \fBrindex\fP(3), \fBstrchr\fP(3), \fBstring\fP(3),
 \fBstrpbrk\fP(3), \fBstrsep\fP(3), \fBstrspn\fP(3), \fBstrstr\fP(3), \fBwcstok\fP(3)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.51 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.54 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。