创建重复字符串的最快/最短方法是什么。
例如,n = 10, char = '*', resulting allocated string: **********
答案 0 :(得分:11)
使用memset。
int n = 10;
char c = '*';
char* buf = malloc(n+1);
memset(buf, c, n);
buf[n] = '\0';
free(buf);
答案 1 :(得分:6)
memset(buf, '*', 10); buf[10]=0;
将'*'
和10
替换为您想要的值,如果预先知道长度并且可能很大,请使用buf=malloc(n+1);
来获取缓冲区。
答案 2 :(得分:1)
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);
}