如何从c?
中的字符数组中选择随机元素例如:
char *array[19];
array[0] = "Hi";
array[1] = "Hello";
等
我正在寻找像array [rand]这样的东西,其中rand是o和数组长度之间的随机整数(在这种情况下为20),如1,2,3,19等。
答案 0 :(得分:2)
要开始,因为你有一个字符串数组而不是字符数组,你必须将它声明为char* array[19];
然后,您可以声明以下(总是有用的)宏
#define ARR_SIZE(arr) ( sizeof((arr)) / sizeof((arr[0])) )
最后,您可以选择arr[rand() % ARR_SIZE(arr)]
(同时请注意,在%
上执行rand()
不正确的方法是获取随机数范围。
答案 1 :(得分:1)
int n = rand()%20;
printf("%s\n", array[n]);
答案 2 :(得分:1)
您可以尝试数组[rand()%ARRAY_LEN],但是您将获得一个字符而不是char*
当你在做数组[0] =“嗨”时;这是不正确的,因为您要分配到单个char
和char*
或将您的char array[20]
变成char *array[20]
,然后您可以分配一串字符
答案 3 :(得分:0)
您建议的是最佳解决方案 - 选择随机索引,然后在此索引处使用该元素。如果您的问题是如何获得随机整数,请使用内置函数rand()
。
答案 4 :(得分:0)
这可以使用c库stdlib.h中的rand完成。
您可以获得这样的随机数:
char random_elem = array [rand()%20];
,您可以像这样打印出来:
printf(“%d”,array [rand()%20]);