Какой бы самый быстрый способ создать строку из n символов в C - PullRequest
0 голосов
/ 20 ноября 2010

Какой бы самый быстрый / самый короткий способ создать строку повторяющихся символов.

Например, n = 10, char = '*', resulting allocated string: **********

Ответы [ 3 ]

11 голосов
/ 20 ноября 2010

Использовать memset .

int n = 10;
char c = '*';

char* buf = malloc(n+1);
memset(buf, c, n);
buf[n] = '\0';

free(buf);
6 голосов
/ 20 ноября 2010

memset(buf, '*', 10); buf[10]=0;

Замените '*' и 10 нужными значениями, и если длина заранее неизвестна и может быть большой, используйте buf=malloc(n+1);, чтобы получить буфер.

1 голос
/ 20 ноября 2010
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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...