"0xC0000005: Access Violation" hoffe ihr könnt mir damit helfen!
-
hallo,
nutze MS Visual C++ 6.0.
hab für die uni folgendes geschrieben und bekomme eine "Access Violation".
kein plan warum?void spieler(int r1,int r2,int r3, int *reihe1,int*reihe2,int*reihe3){ int reihe[3],welchereihe=1,anzahl,i; printf("Sie sind am Zug!\n"); reihe[1]=r1; reihe[2]=r2; reihe[3]=r3; do{ printf("Aus welcher Reihe moechten Sie Streichhoelzer entnehmen? "); scanf("%d",&welchereihe); if ((welchereihe==1 && reihe[1]==0)||(welchereihe==2 && reihe[2]==0)||(welchereihe==3 && reihe[3]==0)) printf("In dieser Reihe befindet sich kein Streichholz!\n"); } while(welchereihe<1 || welchereihe>3); for (i = 1 ;i<=3;i++){ if (welchereihe == i){ do{ printf("Wie viele Streichhoelzer moechten Sie entnehmen? ");scanf("%d",&anzahl); } while(anzahl<1 || anzahl>reihe[i]); reihe[i]-=anzahl; } } *reihe1=reihe[1]; *reihe2=reihe[2]; *reihe3=reihe[3]; return; }
es geht um das vielleicht bekannte nimm-spiel!
ich will in den letzten zeilen doch nur den reihen1-3 die zahlen übergeben! der fehler kommt bei einen der letzten 5 zeilen!DANKE
-
1. Benutz in Zukunft bitte die [cpp]-Tags.
2. Werden arrays in C beginnend mit der 0 angesprochen, nicht mit 1.
-
okidoki schrieb:
es geht um das vielleicht bekannte nimm-spiel!
ich will in den letzten zeilen doch nur den reihen1-3 die zahlen übergeben! der fehler kommt bei einen der letzten 5 zeilen!DANKE
Dann verweist entweder reihe1, reihe2 oder reihe3 auf einen nicht gültigen Speicherbereich. Du zeigst hier aber nicht, wie der Speicher reserviert wird.
-
alles klar, hab die variable mit nur 3 feldern 0,1,2 deklariert, brauche aber 0,1,2,3 also reihe[4]!
im übrigen weiß ich, dass arrays mit 0 anfangen, ich brauch aber das die felder 1-3.
danke trotzdem!