0

我有这个代码

int x = 0
int MAX = 21;
int MIN = 18;
char *arr[40];
do{
  char* current = cycle(x,arr)
  x++;
}while(x<10000000)

我的 cycle() 当前循环遍历整个数组

unsigned char *cycle(int counter, unsigned char *packets[40]){
int tmp = counter % 40;
return packets[tmp];
 }

但我希望它在 [MIN,MAX] 范围内的数组中循环。所以while循环中的返回值为:arr[18], arr[19], arr[20], arr[21], arr[18], arr[19]...

知道如何实现吗?我不想要使用全局变量的解决方案。

感谢帮助!

4

2 回答 2

2

尝试这样的事情:

sometype cycle_range(int counter, sometype array[], unsigned min, unsigned max) {

    sometype* first = array+min;
    unsigned length = max-min+1;

    return first[counter % length];
}

这就像您的解决方案一样工作,但它在min更远的地方开始元素array并循环遍历max-min+1元素而不是40.

sometypeunsigned char*你的情况下,但如果你愿意,你可以在这里替换另一种类型)

于 2012-12-03T10:25:01.397 回答
0
unsigned char *cycle(int counter,int min, int max, unsigned char *packets[40]){
    int tmp = (counter % (max - min + 1)) + min;
    return packets[tmp];
}
于 2012-12-03T11:00:52.040 回答