在这种情况下如何使用malloc?

时间:2014-02-04 01:45:49

标签: c

我是C的新手,所以请耐心等待......

我有一个函数来计算名为char strLength的字符串中的char,但我必须创建一个函数,使用此函数来计算传递的字符串中的字符数,mallocates一个带有空格的新字符串NULL终止符,复制字符串然后返回副本。

这就是我所拥有的:

字符计数器

int strLength(char* toCount)
{
    int count = 0;

    while(*toCount != '\0')
    {
        count++;
        toCount++;
    }

    return count;
}

这是抢手功能的开始

char* strCopy(char *s)
{
    int length = strLength(s);

}

3 个答案:

答案 0 :(得分:1)

由于您正在努力使用malloc,下一行应该是这样的:

char* strCopy(char *s)
{
    int length = strLength(s);
    char *res = malloc(length+1);
    // Copy s into res; stop when you reach '\0'
    ...
    return res;
}

答案 1 :(得分:0)

你想要strdup。但是,因为我怀疑这是一个学习练习:

char *strCopy(const char *src)
{
    size_t l = strlen(src) + 1;
    char *r = malloc(l);
    if (r)
       memcpy(r, src, l);
    return r;
}

如果您对自己如何复制字符串感到好奇,可以将memcpy替换为:

char *dst = r;
while (*src)
   *dst++ = *src++;
*dst = 0;

但是我建议使用库函数:如果不是strdup,那么malloc + memcpy

答案 2 :(得分:0)

  1. 您可以使用strdup()clib调用。

  2. 你可以这样写:

  3. char* strCopy(char *s) {
      int length = strLength(s);
      char *rc = (char *)malloc(length + 1);
      return rc? strcpy(rc, s) : NULL;
    }