Напишите функцию, которая разворачивает строку задом наперёд. Внимание, перезаписывается исходная строка, поэтому вам понадобится функция из Копирование строки в кучу.

Код будет выглядеть намного проще, если вы будете использовать функцию Swap, чтобы менять местами два символа.

Возьмите вспомогательные функции из Длина строки Swap (в теорию)

#include "test.h"

/**
 * Меняет местами два символа.
 *
 * @param a указатель на один символ.
 * @param b указатель на один символ.
 */
void swap(char* a, char* b);

// скопируйте функцию из предыдущей задачи
unsigned int str_length(const char* string);

// скопируйте функцию из предыдущей задачи.
char* str_dup(const char* string);

/**
 * Разворачивает строку задом наперед.
 * Например, из "Hello" получится "olleH".
 * Результат будет записан на месте.
 *
 * Если строка не нультерминальная, то поведение не определено.
 *
 * @param string нуль терминальная строка, которая будет перевернута на месте.
 */
void str_reverse(char* string) {
  // TODO: напиши меня!
  // Подсказка:
  // Используейте функцию str_length
  // Используйте функцию swap
}

void cli(void) {
  // TODO: напиши меня
  // 1. считайте с консоли N - длину строки
  // 2. аллоцируйте память с помощью malloc на N+1 символов
  // 3. считайте с консоли строку длины N (+1 на \\0)
  // 4. Примегите над строкой str_reverse
  // 5. выведите результата в консоль
  // 6. почистите память
}

void test(void) {
  // Это тесты. НЕ УДАЛЯЙТЕ ИХ!
  // Преподаватель будет грустить, если вы удалите тесты T_T.
  // Тесты проверяют, что ваш код работает правильно.
  // Если задача решена неправильно,
  // то в консоли вы увидите ошибку и пояснение.
  // Сдавайте лабу, когда устраните все ошибки в тестах.
  // Если возникли трудности, то попросите преподавателя вам помочь ^_^.

  {
    char* str = str_dup("Hello");
    ASSERT_STR_EQUAL("Hello", str);
    str_reverse(str);
    ASSERT_STR_EQUAL("olleH", str);
  }
}

int main(void) {
  test();
  cli();
  return 0;
}