如何从 c 中的字符数组中选择一个随机元素?
例如:
char *array[19];
array[0] = "Hi";
array[1] = "Hello";
ETC
我正在寻找类似 array[rand] 的东西,其中 rand 是 o 和数组长度(在本例中为 20)之间的随机整数,如 1、2、3、19 等。
首先,由于您有一个字符串数组,而不是字符数组,因此您必须将其声明为char* array[19];
然后,您可以声明以下(总是有用的)宏
#define ARR_SIZE(arr) ( sizeof((arr)) / sizeof((arr[0])) )
最后,您可以选择arr[rand() % ARR_SIZE(arr)]
(同时请记住,执行%
on并不是获取某个范围内的随机数的正确方法rand()
。
int n = rand()%20;
printf("%s\n", array[n]);
您可以尝试 array[rand() % ARRAY_LEN] 但您将获得单个字符而不是char*
当你在做 array[0] = "Hi"; 这是不正确的,因为您分配给单个char
achar*
或者把你的char array[20]
变成a char *array[20]
,你可以分配一串字符
您提出的是最好的解决方案 - 选择一个随机索引,然后使用该索引处的元素。如果您的问题是如何获取随机整数,请使用内置函数rand()
。
这可以使用 c 库 stdlib.h 中的 rand 来完成
你可以得到一个这样的随机数:
char random_elem = 数组[rand()%20];
你可以像这样打印出来:
printf("%d",array[rand()%20]);