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.