在C中创建n个字符串的最快方法是什么

时间:2010-11-20 00:30:58

标签: c string

创建重复字符串的最快/最短方法是什么。

例如,n = 10, char = '*', resulting allocated string: **********

3 个答案:

答案 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);
}