📄 memmem.c
字号:
/* * memmem.c * * Find a byte string inside a longer byte string * * This uses the "Not So Naive" algorithm, a very simple but * usually effective algorithm, see: * * http://www-igm.univ-mlv.fr/~lecroq/string/ */#include <string.h>void *memmem(const void *haystack, size_t n, const void *needle, size_t m){ const unsigned char *y = (const unsigned char *)haystack; const unsigned char *x = (const unsigned char *)needle; size_t j, k, l; if ( m > n ) return NULL; if ( x[0] == x[1] ) { k = 2; l = 1; } else { k = 1; l = 2; } j = 0; while ( j <= n-m ) { if (x[1] != y[j+1]) { j += k; } else { if ( !memcmp(x+2, y+j+2, m-2) && x[0] == y[j] ) return (void *)&y[j]; j += l; } } return NULL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -