/* * Im folgenden Programm hat sich ein Fehler eingeschlichen. Eigentlich sollen die Zeichenketten vertauscht * ausgegeben werden. Allerdings klappt etwas nicht. * * 1. Lassen Sie zunächst das Programm laufen und finden Sie heraus, warum die Zeichenketten string1 und string2 nicht vertauscht werden. * 2. Sorgen Sie nun dafür, dass die Zeichenketten vertauscht werden. Ändern Sie dafür nur den Funktionsinhalt von tauscheStrings(...) * 3. Schreiben Sie nun eine neue Tauschfunktion, die die ursprünglich angedachte Funktionalität umsetzt. Es sollen also nur die Zeiger vertauscht * werden. Der Array-Inhalt soll unverändert bleiben. */ #include #include #include #define MAX_STRING_LEN 8 void tauscheStringsZgrZgr(char **zgr1, char **zgr2); void tauscheStringsInhalt(char *zgr1, char *zgr2); int main() { char strings[][MAX_STRING_LEN] = {"String1", "String2"}; char *string1 = strings[0]; char *string2 = strings[1]; printf("Vor Tausch:\n"); printf("Inhalt von string1: %s\n", string1); printf("Inhalt von string2: %s\n", string2); printf("Inhalt von strings[0]: %s\n", strings[0]); printf("Inhalt von strings[1]: %s\n", strings[1]); //tauscheStringsZgrZgr(&string1, &string2); tauscheStringsInhalt(string1, string2); printf("\nNach Tausch:\n"); printf("Inhalt von string1: %s\n", string1); printf("Inhalt von string2: %s\n", string2); printf("Inhalt von strings[0]: %s\n", strings[0]); printf("Inhalt von strings[1]: %s\n", strings[1]); return EXIT_SUCCESS; } void tauscheStringsZgrZgr(char **zgr1, char **zgr2) { char *tmp = *zgr1; *zgr1 = *zgr2; *zgr2 = tmp; } void tauscheStringsInhalt(char *zgr1, char *zgr2) { char tmp[MAX_STRING_LEN]; strcpy(tmp, zgr1); strcpy(zgr1, zgr2); strcpy(zgr2, tmp); }