MEMMEM
Section: Linux Programmer's Manual (3)
Updated: 1998-01-13
Index
JM Home Page
roff page
名前
memmem - 部分文字列の位置を示す
書式
#define _GNU_SOURCE
#include <string.h>
void *memmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen);
説明
memmem()
関数は、
haystacklen の大きさを持つメモリ領域 haystack の中で
needlelen の大きさを持つ部分文字列 needle が
最初に現れる位置を見つける。
返り値
memmem()
関数は、部分文字列の開始を指すポインタを返し、もし部分文字列が
見つからない場合は NULL を返す。
準拠
この関数は GNU extension である。
バグ
Linux のライブラリに関していうと、 libc 5.0.9 と
それ以前のすべてのバージョンで、この関数は壊れている。
それらのライブラリでは needle と haystack 引数が
入れ替わっており、 needle が最初に出現する部分の最後を
示すポインタが返されていたのである。
libc 5.0.9 は現在も広く使用されているので、この関数を使用するのは
危険である。
新旧両方の libc ライブラリが、
needle が空の場合 (haystack のかわりに) haystack-1 が
返されるというバグを持っている。
そして、glibc 2.0 はより悪くなっており、
haystack の最後のバイトへのポインタを返す。
これは glibc 2.1 で修正された。
関連項目
strstr(3),
feature_test_macros(7)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- 準拠
-
- バグ
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:52 GMT, November 19, 2007