#1 12. Januar 2011 löschen aus einer struktur hey RRler, mein problem ist wie oben beschrieben das ich eine Struktur habe mit telefonlisten. Nun will ich zb aus der Struktur die 3. nummer löschen und ich weiß net wie ich das anstellen soll. Wenn ich die Nummer lösche soll aba auch der platz verschwinden und die nummern die untendrunter sind hochgeschoben werden. hier der wichtigste code ^^ Code: struct liste{ int num; char vorname[15]; char nachname[15]; char tel[20]; }person[30]; void loeschen() { int check; int z=0, w=0; printf("Welche Nummer moechten Sie loeschen?"); scanf("%d", & check); for(z=0;z<i;z++) { if(person[z].num == check) { //hier soll der löschcode rein printf("Datensatz wurde geloescht"); Sleep(3000); system("cls"); main(); } } w=0; for(w=0;w<i;w++); { if(person[w].num != check) { printf("Falsche Eingabe"); Sleep(3000); system("cls"); } } main(); } EDIT: Also es funktioniert alles, er findet auch den datensatz den ich löschen möchte nur ich weiß nicht wie ich ihn löschen soll-.- + Multi-Zitat Zitieren
#2 12. Januar 2011 AW: löschen aus einer struktur Nunja. Mit Arrays von konstanter Größe ist es zwar möglich, aber umständlich. Schaue dir lieber mal verkettete Listen an. Die entsprechen ungefähr dem was Du dir vorstellst. Andernfalls versuch es mit dynamisch großen Arrays, indem sich die Größe immer nach der Anzahl der vorhandenen und validen Telefonnummern richtet (Ist eine nicht gesetzt, wird sie nicht in die neue Liste eingefügt). + Multi-Zitat Zitieren
#3 12. Januar 2011 AW: löschen aus einer struktur Ist es so wie ich es gemacht habe nicht möglich da jetzt einen Wert rauszulöschen? + Multi-Zitat Zitieren
#4 12. Januar 2011 AW: löschen aus einer struktur Vorweg: Das Array besitzt eine konstante Größe. Das Einzige was mögliche wäre, wäre - die zu löschende Tel.-Daten - mit den Nächsten im Array zu überschreiben usw., bis es nichts mehr zu verschieben gibt. Das ist aber mehr als umständlich. + Multi-Zitat Zitieren
#5 12. Januar 2011 AW: löschen aus einer struktur ich habe das jez so gelöst person[z].vorname =fflush(stdin); und das habe ich für die nachfolgenden arrays auch gemacht. Aber ein Problem hab ich trotzdem noch ich habe noch eine int zahl drin siehe struct liste, wie kann ich die den löschen? ich konnte sie bis jetzt nur auf 0 setzen -.- + Multi-Zitat Zitieren
#6 12. Januar 2011 AW: löschen aus einer struktur wat? erstell doch enfach ne kopie der liste und übernimm alle einträge bis auf den, der gelöscht werden soll. // @Lötkolben ja das stimmt wohl, aber da er sich den verketteten listen so verweigert ist das wohl die einzige alternative die er akzeptiert ^^ + Multi-Zitat Zitieren
#7 12. Januar 2011 AW: löschen aus einer struktur Das geht aber wirklich auf die Performance. Sind verkettet Listen wirklich keine Alternative? + Multi-Zitat Zitieren
#8 13. Januar 2011 AW: löschen aus einer struktur ich habs gelöst ich danke euch allen für die antworten. ich hab einfach das array überschrieben. person[z]=person[z+1]; und ein paar andere kleinigkeiten dann hats funktioniert. Den so schreibt der einfach den nachfolgenden datensatz eins weiterrunter. Bei fflush hat er mir leider die komplette liste gelöscht, hab ich dann etwas später gemerkt. bw an alle raus danke für die mühe ^^ + Multi-Zitat Zitieren
#9 13. Januar 2011 AW: löschen aus einer struktur fflush kümmert sich ______nicht_____ um Arrays oder dergleichen. Es kommt mir auch vor als würdest Du nicht genau wissen, was Du da genau machst. Du kannst eine STruktur nicht einfach zuweisen. Schau dir bitte nochmal alles genau an (Arrays, Strukturen, etc.). + Multi-Zitat Zitieren