Fehler erst beim Debuggen



  • Das Programm, was ich geschreben habe geht auf Anhieb, aber beim Debuggen kommt irgendwann ein Speichermeldungsfehler und ich kann das Debuggen nur noch abbrechen, obwohl ich gerne wissen würde, wie das Programm bis zum Ende hin arbeitet.

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX 20
    
    void strncpy(char *s, char *t, int n);
    
    int main(int argc, char* argv[])
    {
      char *input1, *input2, *ergebnis;
      int laenge;
      /* Den Variablen wird der Speicherbereich zugewiesen,
      ab dem allokiert werden soll  */
      input1 = (char*)malloc(20);
      input2 = (char*)malloc(20);
      ergebnis = (char*)malloc(40);
      fgets(input1, MAX, stdin);
      fgets(input2, MAX, stdin);
      strncpy(input1, input2, laenge);
      ergebnis = (strncpy);
      printf("%s", ergebnis);
      return 0;
    }
    
    void strncpy(char *s, char *t, int n)
    {
      while (*t && n-- > 0)
        *s++ = *t++;
      while (n-- > 0)
        *s++ = '\0';
    }
    

    Es bricht immer an dieser Stelle ab:

    while (n-- > 0)
        *s++ = '\0';
    

    Was für Gründe könnte das denn haben ?



  • cHillb3rT schrieb:

    Was für Gründe könnte das denn haben ?

    Hast du mal nachgeprüft, welcher Wert in laenge steht?



  • ah gut... daran lags auch. Die Variable "laenge" war einfach zu groß und damit konnte die Funktion nicht arbeiten ! 👍


Log in to reply