
hame
Mitglieder-
Gesamte Inhalte
44 -
Benutzer seit
-
Letzter Besuch
-
ich hab mir hat vorher eine header angelegt mit den funktionsdeklarationen und strukturdeklarationen und danach schreib ich mir eine testeliste.c und schreib in der mein() einen listenkopf und schreib was in die struktur und teste es. aber ich hab halt hier noch ein paar probleme wie man sieht ^^
-
ich glaub ich brauch da gar kein malloc, das lass ich mal gleich weg. aber ich glaub das andere ist soweit richtig ich soll ja nur den listenkopf mit nullern initialisieren. das hab ich auch gerade gemerkt und hab es verbessert ^^ aber sonst passt alles oder?
-
ich hab folgende struktur gegeben #define LAENGE 80 typedef struct t_element{ char inhalt[LAENGE]; struct t_element *next; }t_element; typedef struct{ struct t_element *erstesElement; struct t_element *letztesElement; int anzahlElemente; }t_Listenkopf jetzt hab ich zwei funktionen geschrieben die eine intialisiert den Listenkopf mit Null Werten und die andere fügt vorne ein neues Element ein. void initListe(t_Listenkopf *li){ li = malloc(sizeof(t_Listenkopf); li->erstesElement = NULL; li->letztesElement = NULL; li->anzahlElemente = NULL; } void vorneEinfuegen(t_Listenkopf *li, char *str){ t_Listenkopf *neu; neu = malloc(sizeof(t_Element)); if(neu==0){ printf("malloc fehlgeschlagen"); return -1; } neu->inhalt[LAENGE] = str; neu -> next = li -> erstesElement; if(!li -> erstesElement){ li->letztesElement = neu; li->erstesElement = neu; } } jetzt wollt ich fragen ob das so grob stimmt weil ich noch nichts in die strukturen geschrieben habe und es noch nicht getestet habe. mfg.
-
mich hat die blöd angabe von meinem blatt irritiert...deswegen hab ich p geschrieben. aber ich es klappt jetzt alles wunderbar und ich glaub ich check langsam das ganze konzept von pointer und structs ^^. danke nochmal
-
heißt ich muss speicher für p holen oder in den argumenten statt p, adressen schreiben? aber er hängt sich danach trotzdem wieder auf!
-
oha, ich studiere wirtschaftsinformatik und muss fast alle fächer aus informatik belegen und jetzt ist halt c dran, und ich muss mich sputen. wo studierst du?
-
void suche(t_adresse** p, char *name, int k){ for(i=0;i<k;i++){ if(strcmp(p[i]->name,name)){ printf("name: %s\n", p[i]->name); printf("vorname: %s\n", p[i]->vorname); printf("plz: %i\n",p[i]->plz); } } } main(){ int i,k; t_adresse** p; char *name; t_adresse** adressen; t_adresse* adresse; printf("Bitte Anzahl eingeben: \n"); scanf("%i", &k); adressen=malloc(k * sizeof(t_adresse*)); for (i = 0; i<k; i++) { adressen[i] = eingabe(); } printf("Bitte namen eingeben: \n"); gets(name); suche(p,name,k); /*wieso hängt er sich hier auf?*/ for (i = 0; i<k; i++) { free(adressen[i]); } free(adressen); return 0; } kannst du mal nachschaun, er hängt sich auf beim eingeben des namens.
-
das passt zwar gard nicht zum thema aber du kennst dich voll gut aus in dem thema bist du lehrer oder so oder was machst du ? hast du dir das alles selber beigebracht? ich versuchs nämlich auch grad aber es hängt halt an ein paar sachen ^^
-
mir war schon klar was da passiert, hättest ja niicht so ausführlich beschreiben müssen außer vlt das erste mit t_adresse**adressen das war nicht so klar. bei den anderen sachen wusste ich schon was passiert ich arbeite ja schon sein ein paar wochen mit c hehe. zwar nur für die uni aber egal. ^^ das weiß ich halt noch nicht was alle fehlermeldungen heißen. diese beispiel sollte eine bestimmt eine einführung in die listen sein und damit hab ich so ziemlich probleme es fängt ja schon bei der referenzierung bzw dereferenzierung von zeigern -.-
-
bei mir aber sagt der compiler "forbids mixed declaration" bei t_adresse**adressen = malloc(k*sizeof(t_adresse*)); und außerdem wollte ich doch nicht adressen den speicher zuweisen sonder dem speicher oben in meiner funktion?
-
klappt jetzt wunderbar und wenn ich jetzt den user fragen will wie viele einträge er speichern will dann muss ich doch nur das array der angabe anpassen?
-
ahhh danke, also langsam komme ich mir richtig blöd vor.
-
so fast geschafft, er bricht mir nur ab wenn ich zahlen eingebe, wieso? hat es was mit speicherreservierung zu tun? typedef struct{ char name[30]; char vorname[30]; int plz; }t_adresse; t_adresse* eingabe() { t_adresse *speicher; speicher = malloc(sizeof(t_adresse*)); printf("Name eingeben: \n"); fgets(speicher->name,50,stdin); printf("Vorname eingeben: \n"); fgets(speicher->vorname,50,stdin); printf("Postleitzahl eingeben: \n"); scanf("%i", speicher->plz); return speicher; } main(){ int i; t_adresse* adressen[5]; t_adresse* adresse; for (i = 0; i<5; i++) { adressen = eingabe(); } }
-
ich glaube da ist der ansatz den ich gehen sollte. nur muss ich ein paar sachen umstellen. weil ich noch fehler bekomme ^^