
Мой приятель уже получил приз за решение задачи. Авторы платят каждому, кто смог, а также тем, кто их рекомендовал.
Правда, это не так просто, как кажется на первый взгляд - без подсказки единицы справляются.
Вот инструкция:
• Посмотрите на main(). Там вызываются различные функции. От вас требуется имплементировать str_cpy() и str_cat(). Функции str_printf() и str_free() имплементитовать не надо.
• Прочтите внимательно main(), чтобы понять прототип и использование str_cpy() и str_cat().
• Код, написанный вами, должен соответствовать по качеству библиотечному коду, как в хорошей имплементации libc.
• Обратите внимание на 4 заголовочных файла перед функцией main. Вы можете использовать функции, описанные в этих файлах, в своей реализации str_cpy() и str_cat().
• Отправьте решение задачи по адресу challengeru@hola.org .
• Замечание: эффективная реализация функций str_cpy и str_cat умещается в 7 строк кода на функцию.
Код: Выделить всё
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
int main(int argc, char *argv[])
{
char *s = NULL;
str_cpy(&s, "Hola Hola");
str_cpy(&s, s+5);
str_cat(&s, " World");
str_printf(&s, "%s!", s);
puts(s); /* result: "Hola World!" */
str_free(&s);
return 0;
}