打印命令在函数

时间:2017-04-10 13:53:47

标签: c function

void print( matrix)
{
    printf("    0    1    2    3    4     5    6    7  \n"); /* printing the game board */
    printf("    -------------------------------------    \n");
    for (int i = 0; i < 8; i++)
    {
        printf("%d|", i);
        for (int j = 0; j < 8; j++)
        {
            printf(" %3c ", matrix[i][j]);
        }
        printf("\n");
    }
}

所以我在编译器中定义了这个函数,运行代码并为此行printf(" %3c ",matrix[i][j]);

获取以下错误消息
  

下标值既不是数组也不是指针,也不是向量

我尝试将matrix定义为int和char值,但仍然是相同的错误

我试图通过调用函数来实现 enter image description here

还有一件事是代码本身没有功能而没有问题

调用函数: 首先我定义了

char playboard[8][8];

然后使用符号&#34;〜&#34;

填充数组
for (int i = 0; i < 8; i++)
  {
     for (int j = 0; j < 8; j++)
       {
          playboard[i][j] = '~';
       }
  }

然后调用函数print

print(playboard);

2 个答案:

答案 0 :(得分:4)

你可能想要这个:

void print(char matrix[8][8])
{
    printf("    0    1    2    3    4     5    6    7\n"); /* printing the game board */
    printf("    -------------------------------------\n");
    for (int i = 0; i < 8; i++)
    {
        printf("%d|", i);
        for (int j = 0; j < 8; j++)
        {
            printf(" %3c ", matrix[i][j]);
        }

        printf("\n");
    }
}

答案 1 :(得分:1)

除了迈克尔的答案,你应该将数组的大小传递给函数以使其可移植。使用sizeof

查看这个简单的示例
#include <stdio.h>
#include <string.h>

void print(size_t rows, size_t cols, char matrix[rows][cols])
{
    printf("    0    1    2    3    4     5    6    7\n"); /* printing the game board */
    printf("    -------------------------------------\n");
    for (size_t i = 0; i < rows; i++)
    {
        printf("%zu|", i);
        for (size_t j = 0; j < cols; j++)
        {
            printf(" %3c ", matrix[i][j]);
        }

        printf("\n");
    }
}

int main (void)
{
    char playboard[8][8];

    memset(playboard, 0x7E, sizeof(playboard));

    print(sizeof(playboard[8]), sizeof(playboard[0])/sizeof(playboard[0][0]), playboard);
}