c - 将一个字符追加到列表中 n 次

标签 c string

我想创建随机数据进行测试。我想用字母 'A' 填充 100 个随机长度字符串的数组。

例子:

array[0] = "AAAAA"
array[1] = "AAAAAAAA"
array[2] = "A"
...

char **create_string()
{
    char **array = malloc(sizeof(**array)); 

    srand((unsigned int)time(NULL));
    int random = 0;

    int i, j;
    for(int i=0; i<100; i++)
    {
        random = rand() % 100;
        for(j=0; j < random; j++)
        {
           array[i] = // some sort of string append that would be cheap.
        }
    }
}

我在看这个C string append他们使用 strcat。有没有更好的方法来解决我的问题?因为我将在循环中运行以创建那些随机大小的字符串。

最佳答案

#include  <stdio.h>
#include <stdlib.h>
#include <time.h>
char **create_string(size_t n) {
    char **array = malloc(sizeof(char*) * n); 
    int i, j;
    for(i=0; i<100; i++)
    {   
        size_t sz = rand() % 100;
        array[i] = malloc(sz + 1); 
        for(j=0; j < sz; j++) {
            array[i][j] = 'A';
        }
        array[i][sz] = 0;
    }   
    return array;
}

int  main() {
    char **array;
    size_t i;
    srand((unsigned int)time(NULL));
    array = create_string(100);
    for (i = 0; i < 100; i++)
        printf("%s\n", array[i]);
    return 0;    

} 

或者,您可以创建一个模板字符串并将所需数量的字符复制到每个随机字符串中:

char **create_string(size_t n) {
    char template[101];
    char **array = malloc(sizeof(char*) * n); 
    int i;

    for (i = 0; i < 100; i++)
        template[i] = 'A';
    template[100] = 0;
    for(i = 0; i < n; i++) {
        size_t sz = rand() % 100;
        array[i] = malloc(sz + 1); 
        strncpy(array[i], template, sz);
        array[i][sz] = 0;
    }   
    return array;
}

关于c - 将一个字符追加到列表中 n 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20535842/

相关文章:

python - 仅在第一次出现分隔符时拆分字符串

C++:将字符串转换为 vector <double>

linux - 字符串操作 : remove last component of path

c - 在 C 中递增 NULL 指针

c - 如何用最少的指令将两个四元数相乘?

c - -Werror 导致编译器在#warning 处停止。我能做些什么来防止这种情况发生?

java - 我们可以检查字符串是否包含在另一个不区分大小写的字符串中吗?

c++ - 如何从 64 位整数中获取高 20 位?

c - 当数据到达时从 FIFO 读取数据 (linux)

java - 将 double 格式设置为分数