Я пытаюсь написать следующую функцию в C,
char* modelstrdup(char* source);
Функция должна имитировать стандартную функцию библиотеки C strdup
. Параметр - это строка, которую мы хотим продублировать. Возвращенный указатель будет указывать на кучу. Когда вы пишете эту функцию, создайте структуру string
в куче, которая содержит копию источника. Установите длину и емкость вашей строки, равную количеству символов в источнике. Быть
обязательно верните адрес первого символа в строке, а не адрес строки структуры.
Это единственный намек, который дал мне мой профессор, но я даже не знаю, с чего начать ...
//Client Program Format only, will not work!
char* s; // should be “yo!” when we‟re done
String* new_string = malloc(sizeof(String) + 10 + 1);
(*new_string).length = 3; // 3 characters in “yo!”
(*new_string).capacity = 10; // malloced 10 bytes
(*new_string).signature = ~0xdeadbeef;
(*new_string).ptr[0] = „y‟;
(*new_string).ptr[1] = „o‟;
(*new_string).ptr[2] = „!‟;
(*new_string).ptr[3] = 0;
s = (*new_string).ptr;
printf(“the string is %s\n”, s);
Есть предложения? Спасибо!