⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memmem.c

📁 linux内核
💻 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 + -