
hame
Mitglieder-
Gesamte Inhalte
44 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von hame
-
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 ^^
-
das klingt mir jetzt einlechtend ^^.
-
eine kleine frage. wo kommt denn bei dir das i vor? hast du schon vorher inrgendwo implementiert oder muss man das nicht wenn man diesen globalen zählen schreibt weil ich damit noch nicht gearbeitet habe. und noch eine kleine frage, also wenn eine funktion nur einen zeiger zurückliefert dann ist es void bzw gibts kein return. sorry wenn ich so dumm frage aber wenn es zeiger geht komm ich leicht durcheinander.
-
man -.-... wenn ich jetzt dein codebespiel aufteilen will in eine funktion und eine main wo in der main gefragt wird wieviele adressen ich eingeben will. was muss ich denn der funktion für parameter übergebenw weil sie ja vom typen t_adresse* ist? also in der funktion soll es eingelesen adresse in dem array gespeichert werden.
-
ja das hat mich verwirrt das bei deinem beispiel der stern beim typen steht und bei dem beispiel was ich gegeben habe der stern bei der variable steht also : bei dir t_adresse* adressen[5] und bei mir t_adresse *name[5]; ist das das selbe?
-
ja aber wenn bei mir steht "legen sie ein array von typ blabla" und dann noch als beispiel "typ *name[5];" dasteht dasnn versteh ich das so.
-
also eigentlich wollte ich 5 adressen in meine struktur speichern. ich sollte mir dazu ein array mit 5 zeigern auf meine struktur erzeugen. und diese funktion schreiben. es heißt halt bevor die funktion den rückgabetyp liefert soll die adresse in dem array gespeichert werden. ich weiß halt nicht ob man das so macht über arrays, dass man die daten dort reinspeichert die in der struktur dann enthalten werden sollen. am ende soll halt in der struktur ein kleines adressbuch sein. ich hätte es halt anders gemacht aber es wird halt verlangt das man sich diesen zeigerarray macht.
-
typedef struct{ char name[50]; char vorname[50]; 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"); do { scanf("%i", speicher->plz); }while(getchar() != '\n'); return speicher; } jetzt gehts zwar auch nicht aber ich bekomme keine fehlermeldung durch und ich habe keine array wo ich 5 einträge speichern könnte. wie mache ich das? außerdem wollt ich noch fragen ob der rückgabetyp stimmt. es soll ein zeiger auf den eintrag zurückliefern und muss halt auch logischerweise den eintrag im array speicher, aber wie?
-
ne das war schon so richtg gemeint. nur wollte ich nicht der variable "speicher" speicher zuweisen sondern den elemementen in der struktur ^^
-
5 weil ich maximal 5 einträge speichern will. danach will ich das dynamisch machen aber soweit bin ich ja noch nicht. beim 2ten punkt wollte ich eigentlich den elementen von der struktur speicher zuweisen^^ und nicht dem array. muss ich jedem elemeten einzeln speicher zuweisen oder kann ich das gleich alles auf einmal machen? und das mit -> wusste ich nicht. jetzt ist auch die fehlermeldung weg.
-
wer kann sich hier den code anschaun und mir kurz helfen? ich habe hier eine vorgegebene struktur und soll mittels array werte einspeicher. am ende soll ich dann die funktion einen zeiger auf den eintrag zurückliefern und der zeiger soll im array gespeichert werden typedef struct{ char name[50]; char vorname[50]; int plz; }t_adresse; t_adresse* eingabe(){ t_adresse *speicher[5]; speicher = malloc(sizeof(t_adresse)); printf("Name eingeben: \n"); fgets(speicher.name,sizeof(speicher.name),stdin); printf("Vorname eingeben: \n"); fgets(speicher.vorname,sizeof(speicher.vorname),stdin); printf("Postleitzahl eingeben: \n"); do { scanf("%i", speicher.plz); }while(getchar() != '\n'); return speicher; } die fehlermeldung sagt bei mir das die variablen name, vorname und plz keiner struktur angehören.