EN JA
MEMMEM(3)
MEMMEM(3) Linux Programmer's Manual MEMMEM(3)

名前

memmem -部分文字列の位置を示す

書式


#define _GNU_SOURCE /* feature_test_macros(7) 参照 */
#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 による拡張である。

バグ

Linux のライブラリに関していうと、 libc 5.0.9 とそれ以前のすべてのバージョンで、この関数は壊れている。それらのライブラリでは needlehaystack 引数が入れ替わっており、 needle が最初に出現する部分の最後を示すポインタが返されていたのである。
 
新旧両方の libc ライブラリが、 needle が空の場合 ( haystack のかわりに) haystack-1 が返されるというバグを持っている。そして、glibc 2.0 ではさらに悪くなっており、 haystack の最後のバイトへのポインタを返す。これは glibc 2.1 で修正された。

関連項目

strstr(3)

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2008-12-05 GNU