Hi,
was ich noch vergessen hatte zu schreiben, ich habe auch schon folgendes probiert:
[...]
*telefonliste[j].name=*telefonliste[j+1].name;
das ist syntaktisch in Ordnung - aber nicht das, was du willst. Damit kopierst du von jedem String nur das erste Zeichen. Diese Anweisung ist vollkommen äquivalent zu
telefonliste[j].name[0]=telefonliste[j+1].name[0];
Ein '*' vor einem Ausdruck ist der sogenannte Dereferenzierungs-Operator[1]. Es bedeutet: Interpretiere den Ausdruck nach dem '*' als Zeiger und nimm das Element, auf das er verweist. Hier ist telefonliste[x].name wieder vom Typ char[]. Ein Array eines Typs ist aber in C-Ausdrücken äquivalent zu einem Zeiger auf diesen Typ, ein char[] ist also gleichbedeutend mit einem char*. Deswegen ergibt der Ausdruck *telefonliste[x].name nur ein einzelnes Zeichen.
Ciao,
Martin
[1] Wow, wirklich ein toller Ausdruck!
Zwei Politiker auf dem Weg zum Sitzungssaal: "Was sagten Sie in ihrer Rede neulich noch zur Rentenreform?" - "Nichts." - "Ja, schon klar. Aber wie haben Sie es formuliert?"