1

如何从 c 中的字符数组中选择一个随机元素?

例如:

char *array[19];

array[0] = "Hi";


array[1] = "Hello";

ETC

我正在寻找类似 array[rand] 的东西,其中 rand 是 o 和数组长度(在本例中为 20)之间的随机整数,如 1、2、3、19 等。

4

5 回答 5

2

首先,由于您有一个字符串数组,而不是字符数组,因此您必须将其声明为char* array[19];

然后,您可以声明以下(总是有用的)宏

#define ARR_SIZE(arr) ( sizeof((arr)) / sizeof((arr[0])) )

最后,您可以选择arr[rand() % ARR_SIZE(arr)](同时请记住,执行%on并不是获取某个范围内的随机数的正确方法rand()

于 2013-06-20T13:51:50.547 回答
1
int n = rand()%20;
printf("%s\n", array[n]);
于 2013-06-20T13:49:17.647 回答
1

您可以尝试 array[rand() % ARRAY_LEN] 但您将获得单个字符而不是char*

当你在做 array[0] = "Hi"; 这是不正确的,因为您分配给单个charachar*

或者把你的char array[20]变成a char *array[20],你可以分配一串字符

于 2013-06-20T13:49:32.583 回答
0

您提出的是最好的解决方案 - 选择一个随机索引,然后使用该索引处的元素。如果您的问题是如何获取随机整数,请使用内置函数rand()

于 2013-06-20T13:46:07.740 回答
0

这可以使用 c 库 stdlib.h 中的 rand 来完成

你可以得到一个这样的随机数:

char random_elem = 数组[rand()%20];

你可以像这样打印出来:

printf("%d",array[rand()%20]);

于 2019-06-17T16:21:15.157 回答