Когда я использую функцию, я получаю только NULL, я что-то не так делаю?Я пытаюсь прочитать файл в двоичном виде, а затем выяснить, есть ли там конкретная подпись
Вот мой код:
#include <stdio.h>
void *memmem(const void *haystack, size_t haystack_len, const void * const needle, const size_t needle_len);
#define TEXT2 "hey"
int main(void)
{
unsigned char* buffer = NULL;
FILE* file = fopen("lol.txt", "rb");
long bufferLen = 0;
fseek(file, 0, SEEK_END);
bufferLen = ftell(file);
fseek(file, 0, SEEK_SET);
buffer = (char*)calloc(bufferLen, sizeof(char));
fread(buffer, sizeof(char), bufferLen, file);
fclose(file);
char *pos = memmem(buffer, bufferLen, TEXT2, sizeof(TEXT2));
if (pos != NULL)
printf("hey");
getchar();
return 0;
}
void *memmem(const void *haystack, size_t haystack_len, const void * const needle, const size_t needle_len)
{
if (haystack == NULL) return NULL; // or assert(haystack != NULL);
if (haystack_len == 0) return NULL;
if (needle == NULL) return NULL; // or assert(needle != NULL);
if (needle_len == 0) return NULL;
for (const char *h = haystack; haystack_len >= needle_len; ++h, --haystack_len)
{
if (!memcmp(h, needle, needle_len))
{
return h;
}
}
return NULL;
}
Я пытался это сделать, ноэто всегда возвращает меня к нулю, есть какие-нибудь идеи?я делаю что-то не так?