如何简化广泛的C语句?

时间:2014-01-14 22:24:11

标签: c if-statement simplify arc4random

我想知道解决这个问题的最佳方法是什么。我有一个随机函数设置,它接受8个字符串作为输入,并随机输出一个。我希望这个随机函数忽略所有没有价值的字符串。例如,如果我有字符串文本#,其中#是1-8,并且让' s说text5和text7没有文本,那么我希望随机化函数检查是否只使用文本#,其中#是1-8但不是5或7。

3 个答案:

答案 0 :(得分:0)

糟糕!将字符串放在一个数组中,而不是有8个不同的变量。然后使用for循环。

答案 1 :(得分:0)

  1. 统计列表中的有效字符串。
  2. 表格随机数(rand() % Count)
  3. 找到匹配的字符串。
  4. 示例代码

    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)

  1. 将字符串放入数组

  2. 使用随机函数

  3. 在数组中选择随机索引
  4. 使用类似于以下的代码:

  5.     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之间的随机数。