MEMMEM

Section: Linux Programmer's Manual (3)
Updated: 2008-12-05
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 と それ以前のすべてのバージョンで、この関数は壊れている。 それらのライブラリでは needlehaystack 引数が 入れ替わっており、 needle が最初に出現する部分の最後を 示すポインタが返されていたのである。

新旧両方の 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: 03:26:48 GMT, April 25, 2010