Zugriffsverletzung - Schreibposition
-
Hallo.
Wie könnte es bei diesem Code zum Absturz des Programmes kommen (Zugriffsverletzung-Schreibposition)?
Ich kann mir das nicht recht erklären...int checksum(char factors[LENGTH_KNR+1], und andere Parameter...) { for(i=0;i<LENGTH_KNR;i++) if((factors[i]>='0') && (factors[i]<='9')) factors[i]-='0'; // diese Zeile soll nach Debugger den Fehler verursachen... ...
-
Was übergibst du der Funktion denn? Und inm wievielten durchlauf passiert der Fehler?
[ Dieser Beitrag wurde am 25.04.2003 um 17:55 Uhr von TriPhoenix editiert. ]
-
Bei Funktionsparametern ist die Angabe von [INDEX] äquivalent zur Übergabe eines Zeigers. Sprich die Angabe wird ignoriert. Typischerweise löst man das Problem durch
+einen Endmarker (bei char optimal: da bietet sich '\0' aka 0 an)
+ einen seperaten Parameter, der die Länge enthältEs gäbe auch noch einige C99-Features... (static in der Parameterleiste usw usf) da müsste ich selber noch mal nachschlagen :-/.
Anmerkung: 'isdigit' aus 'ctype.h' existiert. 'i' ist nicht definiert (und eigentlich kann man bequem mit dem Zeiger 'factors' drüberiterieren).
-
Hi!
Das problem ist das ich den Quellcode nicht geschrieben habe sondern nur verändern muss...
Hab was vergessen: i wird vorher declariert also daran liegt es nicht...
und der Fehler tritt gleich beim ersten Durchlauf auf ( i = 0 ).
Aber ich werde mal versuchen einfach den Zeiger immer um eins zu herhöhen ( obwohl dann ja auch das gleiche passieren müsste )
-
der fehler liegt dann scheinbar beim caller...