2016-04-25 4 views
-2

i manchmal die oben genannte Fehlermeldung erhalten, i sein den folgenden Code aufgrund wissen aber nicht sehen, was Ursache sein könnte, wie im noch recht neu zu C.Segmentation fault (core dumped) Fehler mit kleinem Code

struct Point playerPosition; 
int counter = 0; 
do { 
    playerPosition.x = rand() % mapLength; 
    playerPosition.y = rand() % mapHeight; 
    counter++; 
    printf("The current tile that is being tried is: %c\n", map[playerPosition.x][playerPosition.y]); 
} while((counter < (mapLength*mapHeight)) && ((map[playerPosition.x][playerPosition.y] == '#') || (map[playerPosition.x][playerPosition.y] == 'P'))); 
printf("A tile was found at %d %d, with the tile being %c\n", playerPosition.x, playerPosition.y, map[playerPosition.x][playerPosition.y]); 
+0

Wo sind 'maplength' /' mapheight' definiert und wie hängen sie mit 'map' zusammen? –

+1

Sowie "struct Point" (obwohl wir seine Deklaration wahrscheinlich erraten können) Siehe: [** Wie man ein minimales, komplettes und überprüfbares Beispiel erstellt **] (http://stackoverflow.com/help/mcve) . " –

+1

Ich sehe nirgendwo in Ihrem Code-Ausschnitt, dass' map' definiert ist. Das könnte sicherlich zu einem segfault führen. –

Antwort

0

Einige Teile fehlen in Ihrem Beispielcode, aber das Problem wird höchstwahrscheinlich beim Zugriff auf map sein. Auch die Definition von rand() ist wichtig. Wenn es Werte zwischen -1 und 1 liefert, erhalten Sie einen Segmentierungsfehler.

Verwenden Sie valgrind und andere Tools, um weitere Informationen zu erhalten, was die Ursache für den Segmentierungsfehler ist.