我正在尝试让自定义字符串中继器在C中工作。它可用于某些输入,在其他情况下,它会附加不需要的字符。在我看来,malloc
在某些情况下分配了过多的内存,但是我不太清楚为什么。
示例:
repeater("hi", 2) -> hihi
repeater("yeah", 4) -> yeahyeahyeahyeah?f{??
代码:
int length(char* str)
{
int i;
if(str == NULL)
return 0;
for(i = 0; *(str+i) != '\0'; ++i);
return i;
}
char* repeater(char* str, int times)
{
char* out;
int i,len,sz;
len = length(str);
sz = len * times;
out = (char*)malloc(sz * sizeof(char));
for(i = 0; i < sz; i++)
*(out+i) = *(str + (i % len));
return out;
}
答案 0 :(得分:-1)
您不需要长度函数,strlen已经为您做到了,并且它不包含终止的空字符。
因此 len = length(str); 变为 len = strlen(str);
您需要string.h lib来使用它。
查看此在线版本以查看更改:https://www.jdoodle.com/embed/v0/AiA