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ält

    Es 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...


Anmelden zum Antworten