2017-04-10 48 views
-1
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]; 

然後用符號「〜」填充陣列

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

然後調用的函數打印

print(playboard); 
+2

在'無效打印(矩陣)'看看這個簡單的例子:你需要的'matrix' – BLUEPIXY

+0

C型不具有矢量型。如果這是由C++編譯器編譯的,請更改標籤! – Olaf

+0

@Olaf這是一個C編譯器 – Enigma

回答

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

除了邁克爾回答你應該通過數組的大小,以功能使它便於攜帶。使用的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); 
} 
+0

我仍然是初學者,當談到C,並沒有完全得到一切,但第一個答案完美的作品 謝謝你 – Enigma

+0

我知道了,@MichaelWalz答案是完美的。我的只是添加一些細節。 – LPs