for循环中两个缓冲区的总和

时间:2016-07-08 11:01:19

标签: c loops for-loop while-loop buffer

我有两个不同大小的缓冲区,我需要得到第三个缓冲区,它们等于两者的总和。

这就是我做的事情(我知道这是错的)

    for (i = 0; i < num; i += c){
    for (i2 = 0; i2 < num2; i2 += c2){

        printf("%d ",(buf[i]+buf2[i2])/2);

        }
}

我不想完成i2循环然后迭代i,我希望让两个for循环同时工作,我不知道怎么做,因为num2&gt; num所以如果我像这样使用单一:

 `for (i = 0, i2=0; i < num, i2 < num2; i+=c, i2+=c)`

我认为它不会起作用。

我想过使用上面写的代码并添加类似的东西:当i = num时,buf [i]等于0。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以迭代直到到达较小数组的末尾,然后继续前进以获得更大的数组:

int i;
int lower = num > num2 ? num2 : num;
int upper = num > num2 ? num : num2;
int buf3[upper];

for (i = 0; i < lower; ++i) {
    buf3[i] = buf[i] + buf2[i];
}

for (i; i < upper; ++i) {
    if (upper == num2) {
        buf3[i] = buf2[i];
    }
    else {
        buf3[i] = buf[i];
    }
}