char *allocate(int c, size_t n)
{
if(!c) return calloc(n + 1);
char *s = malloc(n + 1);
memset(s, c, n);
s[n] = '\0';
return s;
}
Честно говоря, почему вы пытаетесь сделать это быстрее всего?Почему бы просто не сделать это, а затем ускорить это позже, если вам нужно?
В частности, если вы создаете это только для вывода, вы можете просто
void printtimes(int c, size_t n, FILE *f)
{
while(n--) fputc(c, f);
}