OSDN Git Service

長音記号の修正を release に反映
[linuxjm/LDP_man-pages.git] / release / man3 / qsort.3
index 788f2ce..f66624d 100644 (file)
@@ -1,5 +1,6 @@
 .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk)
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
@@ -19,6 +20,7 @@
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" References consulted:
 .\"     Linux libc source code
 .\" Modified 1993-03-29, David Metcalfe
 .\" Modified 1993-07-24, Rik Faith (faith@cs.unc.edu)
 .\" 2006-01-15, mtk, Added example program.
+.\" Modified 2012-03-08, Mark R. Bannister <cambridge@users.sourceforge.net>
+.\"                  and Ben Bacarisse <software@bsb.me.uk>
+.\"     Document qsort_r()
 .\"
-.\" FIXME glibc 2.8 added qsort_r(), which needs to be documented.
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
 .\"
 .\" Japanese Version Copyright (c) 1997 YOSHINO Takashi
 .\"       all rights reserved.
 .\" Translated 1997-01-21, YOSHINO Takashi <yoshino@civil.jcn.nihon-u.ac.jp>
 .\" Updated & Modified 2004-06-06, Yuichi SATO <ysato444@yahoo.co.jp>
 .\" Updated 2006-01-18, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
 .\"
-.TH QSORT 3 2009-09-15 "" "Linux Programmer's Manual"
-.SH Ì¾Á°
-qsort \- ÇÛÎó¤òʤÙÊѤ¨¤ë
-.SH ½ñ¼°
+.TH QSORT 3 2012\-03\-08 "" "Linux Programmer's Manual"
+.SH 名前
+qsort, qsort_r \- 配列を並べ変える
+.SH 書式
 .nf
-.B #include <stdlib.h>
+\fB#include <stdlib.h>\fP
+.sp
+\fBvoid qsort(void *\fP\fIbase\fP\fB, size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP
+\fB           int (*\fP\fIcompar\fP\fB)(const void *, const void *));\fP
 .sp
-.BI "void qsort(void *" base ", size_t " nmemb ", size_t " size ,
-.BI "           int(*" compar ")(const void *, const void *));"
+\fBvoid qsort_r(void *\fP\fIbase\fP\fB, size_t \fP\fInmemb\fP\fB, size_t \fP\fIsize\fP\fB,\fP
+\fB           int (*\fP\fIcompar\fP\fB)(const void *, const void *, void *),\fP
+\fB           void *\fP\fIarg\fP\fB);\fP
 .fi
-.SH ÀâÌÀ
-.BR qsort ()
-´Ø¿ô¤Ï¡¢
-\fInmemb\fP ¸Ä¤ÎÂ礭¤µ \fIsize\fP ¤ÎÍ×ÁǤò¤â¤ÄÇÛÎó¤òʤÙÊѤ¨¤ë¡£
-\fIbase\fP °ú¤­¿ô¤ÏÇÛÎó¤ÎÀèƬ¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
+.sp
+.in -4n
+glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
+.in
+.sp
+.ad l
+\fBqsort_r\fP(): _GNU_SOURCE
+.ad b
+.SH 説明
+\fBqsort\fP()  関数は、 \fInmemb\fP 個の大きさ \fIsize\fP の要素をもつ配列を並べ変える。 \fIbase\fP
+引き数は配列の先頭へのポインターである。
+.PP
+\fIcompar\fP をポインターとする比較関数によって、 配列の中身は昇順 (値の大きいものほど後に並ぶ順番) に並べられる。
+比較関数の引き数は比較されるふたつのオブジェクトのポインターである。
 .PP
-\fIcompar\fP ¤ò¥Ý¥¤¥ó¥¿¤È¤¹¤ëÈæ³Ó´Ø¿ô¤Ë¤è¤Ã¤Æ¡¢
-ÇÛÎó¤ÎÃæ¿È¤Ï¾º½ç (ÃͤÎÂ礭¤¤¤â¤Î¤Û¤É¸å¤ËʤֽçÈÖ) ¤Ëʤ٤é¤ì¤ë¡£
-Èæ³Ó´Ø¿ô¤Î°ú¤­¿ô¤ÏÈæ³Ó¤µ¤ì¤ë¤Õ¤¿¤Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
+比較関数は、第一引き数が第二引き数に対して、 1) 小さい、2) 等しい、3) 大きいのそれぞれに応じて、 1) ゼロより小さい整数、2) ゼロ、3)
+ゼロより大きい整数の いずれかを返さなければならない。 二つの要素の比較結果が等しいとき、 並べ変えた後の配列では、これら二つの順序は規定されていない。
 .PP
-Èæ³Ó´Ø¿ô¤Ï¡¢Âè°ì°ú¤­¿ô¤¬ÂèÆó°ú¤­¿ô¤ËÂФ·¤Æ¡¢
-1) ¾®¤µ¤¤¡¢2) Åù¤·¤¤¡¢3) Â礭¤¤¤Î¤½¤ì¤¾¤ì¤Ë±þ¤¸¤Æ¡¢
-1) ¥¼¥í¤è¤ê¾®¤µ¤¤À°¿ô¡¢2) ¥¼¥í¡¢3) ¥¼¥í¤è¤êÂ礭¤¤À°¿ô¤Î
-¤¤¤º¤ì¤«¤òÊÖ¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-Æó¤Ä¤ÎÍ×ÁǤÎÈæ³Ó·ë²Ì¤¬Åù¤·¤¤¤È¤­¡¢
-ʤÙÊѤ¨¤¿¸å¤ÎÇÛÎó¤Ç¤Ï¡¢¤³¤ì¤éÆó¤Ä¤Î½ç½ø¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¡£
-.SH ÊÖ¤êÃÍ
-.BR qsort ()
-¤ÏÃͤòÊÖ¤µ¤Ê¤¤¡£
-.SH ½àµò
-SVr4, 4.3BSD, C89, C99.
-.SH Ãí°Õ
-.I compar
-°ú¤­¿ô¤Ë»ÈÍѤ¹¤ë¤Î¤ËŬ¤·¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤È¤·¤Æ¤Ï
-.BR alphasort (3),
-.BR versionsort (3)
-¤¬¤¢¤ë¡£
-C ¤Îʸ»úÎó¤òÈæ³Ó¤¹¤ë¾ì¹ç¡¢°Ê²¼¤ÎÎã¤Ë¤¢¤ë¤è¤¦¤ËÈæ³Ó´Ø¿ô¤Ç
-.BR strcmp (3)
-¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤â¤Ç¤­¤ë¡£
-.SH Îã
-»ÈÍÑÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢
-.BR bsearch (3)
-¤Ë¤¢¤ëÎã¤ò»²¾È¤¹¤ë¤³¤È¡£
+\fBqsort_r\fP() 関数は \fBqsort\fP() と同じだが、比較関数 \fIcompar\fP が第 3 引き数を
+取る点が異なる。ポインターが \fIarg\fP 経由で比較関数に渡される。
+これにより、比較関数は任意の引き数を渡すためにグローバル変数を使う必要がなくなり、
+そのため、リエントラント (再入可能) で安全にスレッドで使用できるようになる。
+.SH 返り値
+関数 \fBqsort\fP() と \fBqsort_r\fP() は値を返さない。
+.SH バージョン
+\fBqsort_r\fP() は glibc バージョン 2.8 で追加された。
+.SH 準拠
+\fBqsort\fP() 関数は SVr4, 4.3BSD, C89, C99 に準拠している。
+.SH 注意
+\fBqsort\fP() の \fIcompar\fP 引き数に使用するのに適しているライブラリルーチンと
+しては \fBalphasort\fP(3), \fBversionsort\fP(3) がある。 C の文字列を比較する場合、
+以下の例にあるように比較関数で \fBstrcmp\fP(3) を呼び出すこともできる。
+.SH 例
+使用例については、 \fBbsearch\fP(3)  にある例を参照すること。
 
-°Ê²¼¤Î¥×¥í¥°¥é¥à¤ËÊ̤λÈÍÑÎã¤ò¼¨¤¹¡£¤³¤Î¥×¥í¥°¥é¥à¤Ï¡¢
-¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¤­¿ô¤Ç»ØÄꤵ¤ì¤¿Ê¸»úÎó¤ÎʤӴ¹¤¨¤ò¹Ô¤¦¡£
+以下のプログラムに別の使用例を示す。このプログラムは、 コマンドライン引き数で指定された文字列の並び換えを行う。
 .sp
 .nf
 #include <stdio.h>
@@ -93,9 +106,9 @@ C 
 static int
 cmpstringp(const void *p1, const void *p2)
 {
-    /* ¤³¤Î´Ø¿ô¤Î¼ÂºÝ¤Î°ú¤­¿ô¤Ï "char ·¿¤Ø¤Î¥Ý¥¤¥ó¥¿¤Î¥Ý¥¤¥ó¥¿" ¤À¤¬¡¢
-       strcmp(3) ¤Î°ú¤­¿ô¤Ï "char ·¿¤Ø¤Î¥Ý¥¤¥ó¥¿" ¤Ç¤¢¤ë¡£
-       ¤½¤³¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ë¥­¥ã¥¹¥È¤ò¤·¤Æ¤«¤é¥Ý¥¤¥ó¥¿¤ÎµÕ»²¾È¤ò¹Ô¤¦¡£*/
+    /* この関数の実際の引き数は "char 型へのポインターのポインター" だが、
+       strcmp(3) の引き数は "char 型へのポインター" である。
+       そこで、以下のようにキャストをしてからポインターの逆参照を行う。*/
 
     return strcmp(* (char * const *) p1, * (char * const *) p2);
 }
@@ -106,8 +119,8 @@ main(int argc, char *argv[])
     int j;
 
     if (argc < 2) {
-       fprintf(stderr, "Usage: %s <string>...\\n", argv[0]);
-       exit(EXIT_FAILURE);
+        fprintf(stderr, "Usage: %s <string>...\en", argv[0]);
+        exit(EXIT_FAILURE);
     }
 
     qsort(&argv[1], argc \- 1, sizeof(char *), cmpstringp);
@@ -117,8 +130,9 @@ main(int argc, char *argv[])
     exit(EXIT_SUCCESS);
 }
 .fi
-.SH ´ØÏ¢¹àÌÜ
-.BR sort (1),
-.BR alphasort (3),
-.BR strcmp (3),
-.BR versionsort (3)
+.SH 関連項目
+\fBsort\fP(1), \fBalphasort\fP(3), \fBstrcmp\fP(3), \fBversionsort\fP(3)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。