如何在 C 中打印一个数组覆盖另一个数组?

How to Print an Array over another Array in C?

我正在编写一个程序,它将比较 2 个独立的二维数组中的元素并检查相互重叠的元素。然后它打印出一个数组,其中存在两个二维数组中的元素,但是当元素相互重叠时,第二个二维数组中的元素将替换第一个数组中的元素。如何将这两个数组重叠为 1 个数组?

void tile1(char pat1[13][13]) //to arrange the pattern
{
int r,c;

for(r=0;r<13;r++)
{
    for(c=0;c<13;c++)
    {
        if(r==0 || r==12)  // top and bottom border
        {
            pat1[r][c] = '-';
        }
        else if(r>0 && r<6 && c>=0 && c<6)
        {
            pat1[r][c] = '^';
        }
        else
        {
            pat1[r][c] = ' ';
        }
    }
}
}


void tile3(char pat3[13][13])  //to arrange the pattern
{
int r,c;


for(r=0;r<13;r++)
{
    for(c=0;c<13;c++)
    {
        if(r==0 || r==12)
        {
            pat3[r][c] = '-';
        }

        else if(r==c || r+1==c || r-1==c)
        {
            pat3[r][c] = 'X';
        }

        else
        {
            pat3[r][c] = ' ';
        }
    }
}
}

这是我的代码 'overlap':

void overlap(char pat1[13][13], char pat2[13][13])
{
int r,c;

for(r=0;r<13;r++)
{
    printf("|");
    for(c=0;c<13;c++)
    {
        if(pat1[r][c]!=' ' || pat2[r][c]!=' ')
        {
            pat1[r][c] == pat2[r][c];
        }
        else
        {
            pat1[r][c] == pat1[r][c];
        }
        printf(" %c ", pat1[r][c]);
    }
    printf("|\n");
}
}

当我运行程序时,它打印一个空的二维数组?我应该修改代码的哪一部分,我很确定它的重叠功能对吗?

以下测试不正确:

if (pat1[r][c]!=' ' || pat2[r][c]!=' ') {
    pat1[r][c] == pat2[r][c];
}

考虑 pat1 有一个非 space 而 pat2 有一个 space 的情况。您想单独留下 pat1,但此测试会成功,并且会被 pat2 中的 space 替换。

您可以将其更改为:

if (pat1[r][c] == ' ') {
    pat1[r][c] == pat2[r][c];
}

这将用 pat2 中的任何内容替换 pat1 条目(space 或其他),if pat1 条目是 space.

您也可以删除 else 子句,因为它没有任何作用。