随机化C字符串数组

时间:2015-01-28 21:55:26

标签: c arrays

我遇到的问题是将随机C字符串插入数组中。我在stackexchange上读过一些关于这个的问题,但似乎没有一个对我有用。

void rand(const char *tab[], int n){
    int i, j;
    char c[10];
    for(i=0; i<n; i++){
        for(j=0; j<10; j++){
            c[j]= rand()%26 + 97;
        }
        tab[i]=c;
    }
}

尝试打印时,我得到一个空白屏幕,好像数组是空的。我将数组声明为const char *tab[]并使用函数rand(tab, 5)。可能有什么不对?

1 个答案:

答案 0 :(得分:0)

您需要复制生成的字符串。你需要一个字符串终止符

void rand(const char *tab[], int n){
    int i, j;
    char c[10];
    for(i=0; i<n; i++){
        for(j=0; j<9; j++){
            c[j]= rand()%26 + 97;
        }
      c[9] = '\0';
        tab[i]=strdup(c) <<<<=====
    }
}

字符串在堆上分配 - 当你完成时释放它们

for(int i=0; i < NO_STRINGS; i++)
{
   free(tab[i]);
}