我有两个大小不同的缓冲区,我需要得到第三个缓冲区,该缓冲区等于两个缓冲区的总和。
这就是我的做法(我知道这是错误的)
for (i = 0; i < num; i += c){
for (i2 = 0; i2 < num2; i2 += c2){
printf("%d ",(buf[i]+buf2[i2])/2);
}
}
我不想完成i2循环,然后将i循环1,我想让两个for循环同时工作,我不知道该怎么做,因为num2> num,所以如果我使用单个for那:
`for (i = 0, i2=0; i < num, i2 < num2; i+=c, i2+=c)`
我认为这行不通。
我已经考虑过使用上面编写的代码并添加类似的内容:当i = num时,buf [i]等于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];
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句