sPoOL Geschrieben 24. September 2002 Geschrieben 24. September 2002 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; } Zitieren
Klotzkopp Geschrieben 24. September 2002 Geschrieben 24. September 2002 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++ ) Zitieren
sPoOL Geschrieben 24. September 2002 Autor Geschrieben 24. September 2002 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. Zitieren
Klotzkopp Geschrieben 24. September 2002 Geschrieben 24. September 2002 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*)? Zitieren
sPoOL Geschrieben 24. September 2002 Autor Geschrieben 24. September 2002 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. Zitieren
Klotzkopp Geschrieben 24. September 2002 Geschrieben 24. September 2002 #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] Zitieren
sPoOL Geschrieben 24. September 2002 Autor Geschrieben 24. September 2002 das war alles? oh man... danke Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.