我是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);
}
答案 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)
您可以使用strdup()clib调用。
你可以这样写:
char* strCopy(char *s) { int length = strLength(s); char *rc = (char *)malloc(length + 1); return rc? strcpy(rc, s) : NULL; }