我想知道解决这个问题的最佳方法是什么。我有一个随机函数设置,它接受8个字符串作为输入,并随机输出一个。我希望这个随机函数忽略所有没有价值的字符串。例如,如果我有字符串文本#,其中#是1-8,并且让' s说text5和text7没有文本,那么我希望随机化函数检查是否只使用文本#,其中#是1-8但不是5或7。
答案 0 :(得分:0)
糟糕!将字符串放在一个数组中,而不是有8个不同的变量。然后使用for循环。
答案 1 :(得分:0)
(rand() % Count)
。示例代码
int StringCount = 8;
char *String[StringCount];
// populate `Sting` somehow
// count valid strings
int Count = 0;
for (int i=0; i<StringCount; i++) {
if (ValidString(String[i])) Count++;
}
if (Count == 0) Handle_NoGoodStrings();
int random_number = rand()%Count;
int i;
for (i=0; i<StringCount; i++) {
if (ValidString(String[i])) {
if (Count == random_number) {
break;
}
}
}
// String[i] is the string
答案 2 :(得分:-1)
将字符串放入数组
使用随机函数
使用类似于以下的代码:
int i; for (i = index; i != index; i = (i+1) % numitems) { /* check we have a string and it isn't empty */ if (strings[i] && *strings[i]) return strings[i]; } return NULL;
假设index
是0和numitems
-1之间的随机数。