【问题标题】:create strdup in C在 C 中创建 strdup
【发布时间】:2010-12-09 23:52:09
【问题描述】:

我正在尝试用 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);

有什么建议吗?谢谢!

【问题讨论】:

  • 这个问题不是很清楚。您能否告诉我们您遇到问题的哪一部分?
  • (*new_string).ptr[1] = „o‟; 哎呀! 从哪里得到的?
  • @pmg - 我怀疑这是 OP 正在使用的剪切和粘贴或键盘的功能,它被映射为“到 „
  • 我有一个更好的问题——为什么你认为我们应该为你做作业?您将通过这种方式学到的只是如何让其他人为您完成工作。如果这就是你想做的,你应该在攻读 MBA,而不是编程。

标签: c


【解决方案1】:

给个提示

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

        //copy characters here
        return ret;
}

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    相关资源
    最近更新 更多