我有两个动态分配的矩阵。我想复制第一个矩阵中的所有数据,然后用边框将它居中到第二个矩阵。这是我的代码显然不能正常工作所以我很感激一些帮助:
第一个矩阵:
unsigned char ** sudo=(unsigned char **) malloc (width*sizeof (unsigned char*));
if ( sudo != NULL){
for (k=0; k<width ;k++){
sudo[k] =(unsigned char*) calloc (height,sizeof (unsigned char));
}
}
第二个:
unsigned char ** fmatr=(unsigned char **) malloc ((width+border)*sizeof (unsigned char*));
if ( fmatr != NULL){
for (k=0; k<(width+border) ;k++){
fmatr[k] =(unsigned char*) calloc ((height+border),sizeof (unsigned char));
}
}
我如何将第一个矩阵置于第二个矩阵的中间:
for(i=0,k=0;i<(width+border);i++,k++){
for(j=0,l=0;j<(height+border);j++,l++){
if((i>(2*border)) && (j>(2*border))){
fmatr[i][j]=sudo[k][l];
}
}
}
有什么想法吗?
答案 0 :(得分:0)
由于第一个矩阵具有宽度x高度条目,因此您希望循环从0到宽度-1(不是宽度-1 +边框)和从0到高度-1(不是高度-1 +边框)。同样,您希望在分配时将border/2
添加到第二个数组的索引。
for(i=0;i<width;i++){
for(j=0;j<height;j++){
fmatr[i+(border/2)][j+(border/2)]=sudo[i][j];
}
}