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;
}
You don't need the length function, strlen already do that for you AND it dont include the terminating null character.
so len = length(str); become len = strlen(str);
You need the string.h lib to work with it.
Look at this online version to see the change : https://www.jdoodle.com/embed/v0/AiA