在C中创建一个不添加空格作为其元素的空心矩形

Creating a hollow rectangle without adding spaces as its elements in C

以下代码创建一个带有二维数组的空心矩形。

int main(){
int x,y;
    for(x=0; x<11; x++)
        for(y=0; y<11; y++)
            if (x==0 || x==10 || y==0 || y==10)
                box [x][y] = '=';
            else{
                box[x][y]=' ';
            }
}

if 函数创建边框,else 函数在其中创建空心 space。

是否可以在不让 else 向我的数组中添加空白的情况下执行此操作?

只需摆脱 else 条件即可填充本应空无一物的 space,其中充满了奇怪的字符。

Simply getting rid of the else condition fills the supposedly empty spaces full of weird characters.

由于box似乎是一个全局变量,其内容最初被初始化为全零(why?)

您希望将内容初始化为空格,因此您需要执行以下操作之一:

  • 编写一个循环以用空格预填充 box[][],或者
  • 使用 memset 预填充 box[][] 空格,或
  • 保留 else 分支,用空格填充未使用的 box[][] 单元格。

我更喜欢最后一种解决方案,因为它最经济。我还会用条件表达式重写循环,如下所示:

for(y=0; y<11; y++) {
    box [x][y] = (x==0 || x==10 || y==0 || y==10) ? '=' : ' ';
}