我有这段代码
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] ......
知道如何实现这个吗?我不想要使用全局变量的解决方案。
感谢您的帮助!
答案 0 :(得分: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
。
(sometype
在您的情况下为unsigned char*
,但如果您愿意,可以在此替换其他类型
答案 1 :(得分:0)
unsigned char *cycle(int counter,int min, int max, unsigned char *packets[40]){
int tmp = (counter % (max - min + 1)) + min;
return packets[tmp];
}