2017-04-10 1 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"); 
    } 
} 

so definiert ich diese Funktion im Compiler, lief den Code und erhalten die folgende Fehlermeldung für diese Linie printf(" %3c ",matrix[i][j]);Druckbefehl gibt Fehler in der Funktion

indizierter Wert weder Array ist noch Zeiger noch Vektor

ich habe versucht, die matrix als int definiert, und als char-Wert, aber immer noch denselben Fehler

, was ich Ich versuche durch Aufruf der Funktion
enter image description here

eine weitere Sache ist zu erreichen, dass der Code selbst, ohne eine Funktion ohne Probleme funktioniert zu sein

Aufruf der Funktion: erste I definiert

char playboard[8][8]; 

dann füllte das Array mit dem Symbol "~"

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

genannt dann die Funktion Druck

print(playboard); 
+2

bei 'void print (Matrix)': Sie brauchen Art von 'matrix' – BLUEPIXY

+0

C keinen Vektortyp hat. Wenn dies von einem C++ - Compiler kompiliert wird, ändern Sie das Tag! – Olaf

+0

@Olaf dies ist ein C-Compiler – Enigma

Antwort

4

Sie wahrscheinlich diese wollen:

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

Neben dem Michael beantworten Sie Größen von Array an die Funktion übergeben sollte es tragbar zu machen. Schauen Sie sich auf diesem einfachen Beispiel sizeof mit

#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

Ich bin immer noch ein Anfänger, wenn es um C geht, hat nicht alles bekommen , aber die erste Antwort funktioniert perfekt danke trotzdem – Enigma

+0

Ich weiß es, und @MichaelWalz Antwort war perfekt. Mir gehört nur, einige Details hinzuzufügen. – LPs

Verwandte Themen