2016-06-29 11 views
-1

Ich bin ziemlich neu in C, und ich habe mich mit einigen Dingen beschäftigt, die wir im Unterricht gemacht haben. Aber ich habe auf ein Problem laufen:Nur das letzte Element des C-Array-Speicherns

srand(time(NULL)); 
for (counter = 0; counter < 7; counter = counter + 1); 
{ 
    stats[counter] = abs(rand() % max); 
} 

Wenn ich diese Elemente zu drucken, aber nur der letzte Sinn macht, alles andere ist -858993460

printf("Health:     %d\n", stats[0]); 
printf("Armor:     %d\n", stats[1]); 
printf("Damage:     %d\n", stats[2]); 
printf("Critical Strike Shance: %d\n", stats[3]); 
printf("Critical Strike Damage: %d\n", stats[4]); 
printf("Dexterity:    %d\n", stats[5]); 
printf("Strength:    %d\n", stats[6]); 
printf("Luck:     %d\n", stats[7]); 

Kann jemand helfen?

Danke!

+2

Sie haben nichts zu 'stats [7]' zugewiesen, obwohl – tkausl

+0

Bitte zeigen Sie den Rest Ihres Programms, wahrscheinlich füllen Sie ein anderes 'stats' Array, oder was auch immer Sie füllen außerhalb des Bereichs. – dasblinkenlight

+1

Veröffentlichen Sie den gesamten Code einschließlich der Erklärung von 'stats', sonst gibt es keinen Grund für irgendjemanden, der darüber spekuliert. –

Antwort

9

Sie haben ein Semikolon am Ende Ihrer for-Schleife.

for (counter = 0; counter < 7; counter = counter + 1); 
                ^^^^ 

dass der folgende Block anschließend nur einmal ausgeführt wird. wie es nicht in der for-Schleife ist.

+0

Ahhh, also passiert die Zuweisung zum Post-Loop-Index '[7] '. Gut beobachtet! (Schade um den Rest von uns ;-) –

+2

Wow! Gute Augen! Und nur der "letzte" wird ausgefüllt, weil "counter" 7 * ist, nachdem * die Schleife beendet ist. @Wintermute Bitte beachten Sie, dass der Zähler * niemals * 7 * innerhalb * der Schleife sein wird. – rrauenza

Verwandte Themen