Реализация memcmp без библиотек?

Функция memcmp в языке программирования C используется для сравнения двух блоков данных. Она сравнивает содержимое двух массивов заданной длины и возвращает 0, если массивы одинаковы, отрицательное число, если первый массив меньше второго, и положительное число, если первый массив больше второго.

Вот пример реализации функции memcmp без использования стандартной библиотеки C:

int my_memcmp(const void *ptr1, const void *ptr2, size_t num) {
  const unsigned char *p1 = (const unsigned char*)ptr1;
  const unsigned char *p2 = (const unsigned char*)ptr2;

  for (size_t i = 0; i < num; ++i) {
    if (p1[i] != p2[i]) {
      return p1[i] - p2[i];
    }
  }

  return 0;
}

Здесь мы объявляем функцию my_memcmp, которая принимает два указателя на блоки данных и длину блоков. Сначала мы приводим указатели к типу const unsigned char*, чтобы обеспечить корректное сравнение байтов блоков данных.

Затем мы проходим циклом по каждому байту блоков данных. Если байты не равны, мы возвращаем разницу между ними (положительное число, если первый массив больше, отрицательное число, если первый массив меньше). Если все байты равны, функция возвращает 0.

Таким образом, мы реализовали функцию memcmp без использования стандартной библиотеки C. Эта реализация обрабатывает случаи, когда размер блоков данных не является степенью двойки, и выполняет сравнение байтов блоков данных до тех пор, пока не найдется несовпадение или пока не будут проверены все байты.