用于具有特定功能的循环

时间:2014-07-03 13:38:17

标签: c arrays for-loop

我正在处理的程序存在一个小问题。

我的程序在数组上执行一个函数。该函数只能执行数组前16个元素的命令。

我现在想要创建一个循环,以便该函数可以处理超过16个数组元素。这是我的想法,但它最终陷入了无限循环:

int l = 0;
for (int i=0; i<=size; i+16)
{
    for (int j=0; j<=16;j++)
    {
        FUNCTION(INARRAY; OUTARRAY);
    }
}

接下来的问题是该函数只会遍历数组的16个元素而忽略其余的元素。

让它走过接下来的16个元素并将其作为以下元素保存在outbuffer中的最佳方法是什么?

当我调整解决方案时,它仍然只处理前16个元素,然后不会继续下一个16个元素。

3 个答案:

答案 0 :(得分:8)

此:

i + 16

不会更改i的值,因此循环永远不会终止。该表达式只计算i + 16的值,但结果将被丢弃。

要更改变量的值,请使用赋值(=)运算符,例如i = i + 16i += 16

答案 1 :(得分:0)

我想我有你想要的东西。您必须执行它并检查它。请注意,如果您的数组大小是16的倍数,则此方法有效,否则将会有剩余的元素与已处理的元素配对。

int count16 = 0;
var tempAr[16];
for (int i=0; i<numOfArraysToGoThrough; i++)
{    
    tempAr[count16]=numOfArrayToGoThrough[i];
    if ( count16 == 15)
    {
    FUNCTION (tempAr, OUTARRAY);
    count16=0;
    }
    else
    count16+=1;

}

答案 2 :(得分:0)

前一段时间出现了这个问题 这是我的工作方式

for (uint64_t i=0; i<size; i+=16)
{aes_encrypt(tfm, &tempbuffer[i], &inbuffer[i]);}

这样做如下 调用aes_encrypt会加密数组中前16个字节的数据, for循环然后跳转到第16个条目并再次执行加密