程序使用rand()
函数生成随机索引。但无论如何它总是产生相同的字符串!为什么要赢得这项工作呢?
void rand_string()
{
int a[10];
int i;
char b[] = "qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM";
printf("%d", sizeof(b) / sizeof(b[0]));
for(i = 0; i < 10; i++)
{
int gen_rand = rand() % 63;
a[i] = b[gen_rand];
}
for(i = 0; i < 10; i++)
printf("%c", a[i]);
}
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以首先定义一个特定于您需要的随机函数,即在特定范围内生成(当前字符串的长度),如下所示:
int random(int min, int max)
{
return min + (rand()) / (RAND_MAX / (max - min));
}
然后在你的字符串随机生成器函数中,你还可以为每个字符串添加一个随机长度:
void rand_str()
{
static const char alphanum[] =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"; // define only on first call
// call srand() using #include <time.h> ; could be outside of function, i.e. in main()
int length = random(0, 10); // get random length in [0, 10] on each call
// use length and random(0, sizeof(alphanum) / sizeof(alphanum[0])) in for loop
// everything else is the same...
}
使用关键字static
来表示数组alphanum
的单个 1 定义(想想它就像使它成为全局的)并调用函数{{1} }一次,在使用srand()
之前。
注意:您应该考虑将函数修改为单一用途,即仅生成随机字符串并返回(指向)字符串;并将其打印在单独的功能中。
1。仅在第一次调用random()
。