Zugriffsverletzung bei Vektoren

Merlin732

Erfahrenes Mitglied
Hallo,

kann mir jemand sagen, warum ich eine "Zugriffsverletzung bei schreiben an Position..." bekomme, wenn ich folgenden Programmcode ausführen möchte.

Code:
for(i=0;i<9;i++) {
        spielfeld[j][i]->wert = (int) zeile[i];	
	spielfeld[j][i]->fixed = 1; //Feld ist nicht beschreibbar
}

spielfeld ist vom Typ feld
Code:
typedef struct feld{
	int wert;
	int fixed; 
};

und wird in der main initialisiert
Code:
struct feld spielfeld[9][9];

Danke im voraus.
 
das steht in der äußeren schleife.

Code:
for(j=0;j<9;j++) {
//Datei zeilenweise auslesen
        if (fgets(zeile,11,spielstand) != NULL) {	
	printf("Zeile %d: %s\n",j, zeile);
				
	       for(i=0;i<9;i++) {
		       spielfeld[j][i]->wert = (int) zeile[i];	
		       spielfeld[j][i]->fixed = 1; //Feld ist nicht beschreibbar
	       }

	}
	else {
		printf("Fehler beim Auslesen der Zeile %d.\n", j);
		//return 0;
	}
}
 
Du greifst mit -> auf deine Variablen zu, hast
aber kein Feld von Zeigern !
Code:
       spielfeld[j][i].wert = (int) zeile[i];    
       spielfeld[j][i].fixed = 1;

Benny
 
Code:
void spielStandladen(struct feld* spielfeld[9][9]) {
...

doch hab ich. Von der Syntax haut es schon hin.
Warum er ins Leere greift will mir nicht einleuchten.
 
Was genau ist denn nochmal die Fehlermeldung und in welcher Zeile?

Schon mal mit atoi() versucht statt (int) .
Wie sieht die Deklaration von deiner zeile Variablen aus?
 
Hi.
Code:
void spielStandladen(struct feld* spielfeld[9][9]) {
...

doch hab ich. Von der Syntax haut es schon hin.
Nein, haut sie nicht. Du hast kein 2-dimensionales Array von Zeigern auf "struct feld", sondern höchstens einen Zeiger auf ein 2-dimensionales Array von "struct feld".

Allerdings ist ein Array auch nur ein Zeiger. D.h. du brauchst gar nichts besonderes zu machen:
C:
void spielStandladen(struct feld spielfeld[9][9]) {
  ...
}

struct feld sf[9][9];
spielStandladen(sf);
Gruß

PS: Übrigens sollte dein C Compiler eine Warnng ausgegeben haben, das die Typen beim Aufruf der Funktion nicht passen.
 
Zurück