Hilfe - ungewollte endlosschleife :(
-
hallo.
beim versuch eine struktur mit bestimmten werten zu initialisieren hab ich mich irgendwie in eine sackgasse gewurschtelt.
struktur wie folgt:typedef struct { int belegt; int color; RECT rect; } CELL; typedef struct { CELL cell[10]; } LINE; typedef struct { LINE lines[20]; } FELD;
gemeint ist eine zweidimensionale matrix aus kleinen kästchen (10*20 zellen) die später dann grafisch dargestellt werden sollen. das sollte so eigentlich auch passen.
der fehler steckt in folgender funktion:int FeldInitialisieren(FELD *pFeld) { FELD feld; for(int y = 0; y <= 20; y++) { for(int x = 0; x <= 10; x++) { feld.lines[y].cell[x].rect.left = 100 + x * iCellSize; feld.lines[y].cell[x].rect.top = 100 + y * iCellSize; feld.lines[y].cell[x].rect.right = feld.lines[y].cell[x].rect.left + iCellSize; feld.lines[y].cell[x].rect.bottom = feld.lines[y].cell[x].rect.top + iCellSize; feld.lines[y].cell[x].belegt = 0; feld.lines[y].cell[x].color = ID_CL_BLACK; } } *pFeld = feld; return 0; }
der eigentliche plan ist der funktion einen zeiger auf eben eine solche struktur zu geben, damit ich sie mit meinen ausgedachten standardwerten füllen kann. jeden wert manuell zuzuweisen wäre wohl nicht das wahre. also dachte ich mir, man könnte das mal eben automatisieren. iCellSize ist globale const int.
was mich nun völlig umhaut - es passiert folgendes:
das pragramm tritt in die schleife ein und beginnt sie abzuarbeiten. das auch vorerst so, wie erwartet. aber sobald y = 19 ist und die for-schleife, die x hochzählt beendet ist, wird y wieder auf 0 gesetzt und die schleife wird zur endlosschleife. zumindest erschien es mir so im schrittweisen durchlauf per debugger. normale ausführung führt zu prozesserauslastung 100%, aber nix weiter passiert.
wahrscheinlich oute ich mich jetzt als oberanfänger, weil ich irgendwas blödes übersehen hab.
ich bin echt langsam etwas verzweifelt weil ich seit tagen nicht vorwärts komme.
wenn mir jemand einen rat in dieser angelegenheit geben könnte, würde mir echt ein riesen stein vom herzen fallen.vielen dank vorweg
-
Beide Schleifen laufen 1 zu weit.
-
juhu es klappt. na klar, jetzt wo du's sagst macht alles sinn.
du hättest mein gesicht sehen sollen, als ich das gelesen habe
danke. endlich kanns weitergehen