создать strdup в C - PullRequest
       21

создать strdup в C

0 голосов
/ 26 октября 2009

Я пытаюсь написать следующую функцию в 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);

Есть предложения? Спасибо!

1 Ответ

4 голосов
/ 26 октября 2009

Вот подсказка

char* strdup(char *str)
{
        char* ret = (char*)malloc(strlen(str)+1);

        //copy characters here
        return ret;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...