需要从 # 开始写 spiral 和

Need to write spiral from # and

我必须从 #. 创建螺旋。它必须根据变量 n 进行扩展。问题是我无论如何都无法创建它。到目前为止,我的程序在测试中遇到了分段错误。在描述中图像是 n = 7.

的输出

有人可以帮忙吗?

char a[100][100];
int n = 7;
int r,s;

void write(char *a[], int n)
{
  int i, j;
  for (i=0;i<n;i++)
  {
    for (j=0; j<n;j++)
      a[i][j]=".";
  }
}

void right (int length)
{
  int k=0;
  for (k=0;k<length;k++)
    a[r][s+k] = '#';
}

void down(int length)
{
  int k=0;
  for (k=0;k<length;k++)
    a[r][s+k] = '#';
}

void up(int length)
{
  int k=0;
  for (k=0;k<length;k++)
    a[r][s+k] = '#';
}

void left(int length)
{
  int k=0;
  for (k=0;k<length;k++)
    a[r][s+k] = '#';
}

回答您关于分段错误的问题:

正如我在评论中提到的,您需要将 "." 从字符串更改为字符 '.'

接下来是在您的 write 函数中,参数需要错误类型的数组。您指定 char *a[] 而您需要 char a[100][100]。这对我有用。

关于预期的行为,这取决于您将螺旋定义为什么。

只要您访问数组,您的程序就会在 write() 函数中出现分段错误。这样就需要在 write() 函数中复制整个数组。请在下方使用。 写(*a[100][100],int n)