I'm trying to get a custom string repeater to work in C. It works for some input, and in other cases, it appends unwanted characters. It seems to me malloc
in some cases allocates too much memory, but I don't quite grasp why.
Examples:
repeater("hi", 2) -> hihi
repeater("yeah", 4) -> yeahyeahyeahyeah?f{??
The code:
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;
}