Veröffentlicht 24. September 200222 j hoi leutz, folgendes problem ich hab nen array da möchte ich per pointer an eine funktion übergeben und in dieser das array leeren/ausgeben... doch leider stützt das programm immer ab! leider komm ich net drauf woran es liegen könnte... #include <stdio.h> #define X 3 #define Y 3 int init( int* ptr_grid[X][Y] ) { int i, j; for ( i=1; i<=X; i++ ) { for ( j=1; j<=Y; j++ ) { ptr_grid[i][j] = '\0'; // Die einzelen Felder mit \0 füllen } } return 1; } int show_grid( int *ptr_grid[X][Y] ) { int i, j; for ( i=1; i<=X; i++ ) { for ( j=1; j<=Y; j++ ) { printf("%c ", ptr_grid[i][j] ); // die einzelen Arrayfelder ausgeben } printf("\n"); } return 1; } int main ( void ) { // Variable initialisieren char grid[X][Y]; // aufruf der einzelnen funktionen init( grid ); show_grid( grid ); // Programm verlassen return 1; }
24. September 200222 j In C geht der gültige Index für ein Array nicht von 1 bis Größe, sondern von 0 bis (Größe - 1): for ( i=0; i<X; i++ )
24. September 200222 j das hilft aber auch nicht wirklich weiter... #include <stdio.h> #define X 3 #define Y 3 int init( int *ptr_grid ) { int i, j; for ( i=0; i<=X-1; i++ ) { for ( j=0; j<=Y-1; j++ ) { ptr_grid[i][j] = '\0'; } } return 1; } int show_grid( int *ptr_grid ) { int i, j; for ( i=0; i<=X-1; i++ ) { for ( j=0; j<=Y-1; j++ ) { printf("%c ", ptr_grid[i][j] ); } printf("\n"); } return 1; } int main ( void ) { char grid[X][Y]; init( grid ); show_grid( grid ); return 1; } denn ich erhalte folgende fehlermeldungen main.c(14) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp main.c(14) : error C2106: '=' : Linker Operand muss ein L-Wert sein main.c(29) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp main.c(40) : warning C4047: 'function' : Anzahl der Dereferenzierungen bei 'int *' und 'char [3][3]' unterschiedlich main.c(40) : warning C4024: 'init' : Unterschiedliche Typen fuer formalen und uebergebenen Parameter 1 main.c(41) : warning C4047: 'function' : Anzahl der Dereferenzierungen bei 'int *' und 'char [3][3]' unterschiedlich main.c(41) : warning C4024: 'show_grid' : Unterschiedliche Typen fuer formalen und uebergebenen Parameter 1 wenn ich bei der übergabe char/int *ptr_grid[X][Y] angebe wir mein programm zwar kompiliert stürzt aber mit der folgenden msg ab: Die Anweisung in "0x00000000" verweist auf Speicher in "0x00000000". Der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden.
24. September 200222 j Vielleicht sagst Du uns besser zuerst, was Du überhaupt vorhast. Willst Du jetzt einen zweidimensionalen Array von einzelnen Zeichen (char) oder von Zeigern auf int (int*)? Oder womöglich einen zweidimensionalen Array von Strings (char*)?
24. September 200222 j bei dem programm soll es sich um ein simples tic tac toe handeln... in main wird grid[X][Y] deklariert. diess 2 dimensionale array soll dann an diveres funktionen zum überprüfen, füllen (mit X oder O) usw. übergeben werden. in diesem fall soll das array in init() geleert werden und bei show_grid() soll es ausgegeben werden... mehr nicht, vorerst.
24. September 200222 j #include <stdio.h> #define X 3 #define Y 3 int init( char ptr_grid[X][Y] ) { int i, j; for ( i=0; i<=X-1; i++ ) { for ( j=0; j<=Y-1; j++ ) { ptr_grid[i][j] = ' '; // Leerzeichen für leeres Feld } } return 1; } int show_grid( char ptr_grid[X][Y] ) { int i, j; for ( i=0; i<=X-1; i++ ) { for ( j=0; j<=Y-1; j++ ) { printf("%c ", ptr_grid[i][j] ); } printf("\n"); } return 1; } int main ( void ) { char grid[X][Y]; init( grid ); show_grid( grid ); return 1; }[/CODE]
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.