 
 Das Programm soll prüfen, ob ein String ein Palindrom (rückwärts gelesen gleich vorwärts) ist. Funktioniert auch tadellos. Es wird auch ausgegeben, ob es sich um ein Palindrom handelt oder nicht. Nur danach crasht irgendwas. Jedenfalls bekomm ich eine Fehlermeldung mit "Fault access xxx; read of address xxx". Und das nach dem eigentlichen Programmablauf, wo eigentlich gar nix mehr passiert. Hier das main-Programm mit der Stelle wo irgendwas nicht passt:
Code: Alles auswählen
int main ()
{
  char *string, *reversed;                      // string wird eingegeben, und reversed ist string rückwärts gelesen
  int n, pal;                                          // n ist die Anzahl der Buchstaben und pal gibt an, ob es sich 
                                                          // um ein Palindrom handelt (wird von Funktion zurückgeliefert)
  printf ("Number of characters: ");
  scanf ("%d", &n);
  if (n > 0)
  {
    string = (char *) calloc (n, sizeof (char));                    // Speicher für string wird allokiert
    readstring (string, &n);                                             // string wird eingegeben
    reverse (string, reversed);                                        // string wird rückwärts auf reversed kopiert
    pal = compare (string, reversed);                              // string und reversed werden verglichen
    if (pal)                                                                     // hier wird geprüft, ob der String ein Palindrom ist
      printf ("\n\nPalindrom.");
      else
        printf ("\n\nNot a palindrom.");
    free (string);                                                           // Speicher wird wieder freigegeben
  }
  getchar ();
  // Genau hier stürzt das Programm ab
  return 0;
}
EDIT: Sorry für die verwackelten Kommentare, bei mir im Browser-Editor sind sie alle auf der gleichen Höhe.




 Ok ich seh's jetzt auch
  Ok ich seh's jetzt auch   ), aber das war ein Spezialfall. Normalerweise merke ich das ja mitten im Programm und sehe dann auch wo ich falsch bin.
 ), aber das war ein Spezialfall. Normalerweise merke ich das ja mitten im Programm und sehe dann auch wo ich falsch bin.