我有两个不同大小的缓冲区,我需要得到第三个缓冲区,它们等于两者的总和。
这就是我做的事情(我知道这是错的)
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。
提前致谢。
答案 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];
}
}