我遇到的问题是将随机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)
。可能有什么不对?
答案 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]);
}