您需要相当于strstr才能在通用数组上工作。这是我从你的问题中得出的结论。没有memstr,因为你可能已经找到了,所以你将不得不写你自己的。
事情是这样的:
size_t memstr(const unsigned char* arr, size_t length, const unsigned char* tofind, size_t flength) {
for(size_t i = 0; i < length-flength; ++i) {
if(memcmp(arr+i, tofind, flength) == 0)
return i;
}
return -1; //highest possible unsigned value - eg std::string::npos often implemented like this.
}
int main() {
const unsigned char arr1[] = {1,2,3,4,5,6,7,8,9,0,3,3,3,3,4,4,4,4,4};
size_t sz = sizeof(arr1)/sizeof(arr1[0]);
const unsigned char fnd[] = {3,3,3};
size_t where = memstr(arr1, sz, fnd, 3);
return 0;
}
会工作的strstr你? http://linux.die.net/man/3/strstr – dbeer
[strstr]有什么问题(http://en.cppreference.com/w/c/string/byte/strstr)? – P0W
标准::搜索做你想要的。 – john