Zeigerspielchen
-
Hallo,
ich habe eine Frage. Um ein Adressbuch zu realisieren habe ich ein dreidimensionales Array initialisiert (char adr[255][10][50]). Im ersten Feld greife ich auf eine beliebige Adresse zu, die (im zweiten Feld) 10 Informationen (Name, Nachname usw.) zur Person enthält. Möglich sind maximal 50 Zeichen pro Information. Wenn ich nun das Adressbuch nach Namen sortieren will, müsste ich theoretisch nur das erste Feld sortieren weil dieses auf die einzelnen Adressen zeigt. Wie kann ich das machen? Hab probiert adr[x]= adr[x+1] dies meldet aber einen Fehler (Typenkonvertierung). Bin für jeden Rat dankbar.
MfG
Klunex
-
du willst "struct".
-
?? ich will eine Adresse nicht als Struktur realisieren weil dies viel mehr Tipparbeit erfordert. Meines Wissens ist ein Array doch ein Zeiger der auf den Anfang der im Speicher abgelegten Daten zeigt. Ein dreidimensionales Array zeigt dann auf ein Zeigerarray das wiederum auf ein Zeigerarray zeigt in dem die Zeiger zu den Daten sind. Ich schreibe mal einfach ein bischen Code um mein Problem verständlicher zu machen.
[code]
int x,y;
char adr[255][10][50];
char sorttemp[50];
char temp[2]= {"Name","Nachname"};for (x= 0;x<10;x++) //ich lese 10 adressen ein
for (y= 0;y<10;y++){
printf("Gib %s ein: ",temp[y]);
scanf("%s",adr[x][y]);
}//eine möglichkeit nun alpabetisch zu sortieren wäre:
// es muss zb adresse 4 mit adresse 8 ausgetauscht werden.for (y= 0;y<10;y++){
strcpy(sorttemp,adr[4][x]); //sehr umständlich, da die werte im speicher
strcpy(adr[4][x],adr[8][x]); //hin und her kopiert werden
strcpy(adr[8][x],sorttemp);
}man müsste hier doch nur den ersten Zeiger (adr[x]) vertauschen um ans Ziel zu kommen. Vielleicht habe ich das mit den Arrays ja total falsch verstanden. Ich wäre dann froh wenn mir einer ein bisschen auf die Sprünge helfen könnte. Im Notfall nehm ich halt ne Structur. Aber wenn ich mal ein Adressbuch mit weitaus mehr Informationen machen möchte dann gute Nacht beim Quelltext schreiben.
-
Klunex schrieb:
Vielleicht habe ich das mit den Arrays ja total falsch verstanden.
Du hast Arrays total falsch verstanden. http://c-faq.com/aryptr/aryptr2.html
-
ok danke. habe nun eine Lösung für das Problem hier im Forum gefunden. Wenns jemanden interessiet:
char (*adr[255])[50];
scanf("%s",adr[x][y]); //kann wie ein dreidimensionales Array behandelt werden
adr[4]= adr[8]; // nun kann man bequem so zuweisen finde ich ziemlich geschickt