Daffi Geschrieben 7. Januar 2009 Geschrieben 7. Januar 2009 Hey, wie der name schon sagt ich hab ne menge Fehler dieser Art. /********************************************/ /* Datensatz anhängen */ /********************************************/ void anhaengen(char *vname,char *nname,char *kontonummer,char *telefonnummer,char *email,int plz,char *stadt,char *passwort,int rechte) { struct benutzerdaten *zeiger, *zeiger1; if(ende == NULL) { // Speicherplatzreservierung auf element ende if((ende=(struct benutzerdaten *)malloc(sizeof(struct benutzerdaten))) == NULL) { printf("Konnte keinen Speicherplatz für ende reservieren\n"); return; } } // für erstes Element der Liste if(anfang == NULL) { if((anfang = (struct benutzerdaten *)malloc(sizeof(struct benutzerdaten))) == NULL) { printf("Kein Speicherplatz vorhanden für anfang\n"); return; } // Übergeben der Werte auf anfang strcpy(anfang->vname, vname); strcpy(anfang->nname, nname); strcpy(anfang->telefonnummer, telefonnummer); strcpy(anfang->email, email); strcpy(anfang->kontonummer,kontonummer); strcpy(anfang->a.stadt, stadt); strcpy(anfang->passwort, passwort); strcpy(anfang->a.plz,plz); strcpy(anfang->rechte, rechte); anfang->next=NULL; ende=anfang; ende->prev=NULL; } else // für alle anderen Elemente { zeiger=anfang; // geht bis zum letzten durch und das nächste Element wird dran gehangen while(zeiger->next != NULL) zeiger=zeiger->next; if((zeiger->next =(struct benutzerdaten *)malloc(sizeof(struct benutzerdaten))) == NULL) { printf("Kein Speicherplatz für das letzte Element\n"); return; } zeiger1=zeiger; zeiger=zeiger->next; strcpy(zeiger->vname, vname); strcpy(zeiger->nname, nname); strcpy(zeiger->telefonnummer, telefonnummer); strcpy(zeiger->email, email); strcpy(zeiger->kontonummer,kontonummer); strcpy(zeiger->a.stadt, stadt); strcpy(zeiger->passwort, &passwort); strcpy(zeiger->a.plz, plz); strcpy(zeiger->rechte, rechte); zeiger->next=NULL; ende=zeiger; zeiger->prev=zeiger1; zeiger1->next=zeiger; } } } Hier der Auszug aus dem Header: void anhaengen(char *vname,char *nname,char *kontonummer,char *telefonnummer,char *email,int plz,char *stadt,char *passwort,int rechte); weitere Fehler: [Linker error] undefined reference to `anhaengen' [Warning] passing arg 1 of `strcpy' from incompatible pointer type Ich find die Fehler einfach nicht. Wäre dankbar über hilfe!
Klotzkopp Geschrieben 8. Januar 2009 Geschrieben 8. Januar 2009 Hey, wie der name schon sagt ich hab ne menge Fehler dieser Art.Es wäre hilfreich gewesen, hättest du gesagt, in welchen Zeilen diese Fehler auftreten. Ich vermute aber mal, dass der Compiler nicht mag, wenn du ints mit strcpy zu kopieren versuchst. Der Linkerfehler weist darauf hin, dass du die gezeigte Datei einfach nicht dazugelinkt hast.
Daffi Geschrieben 8. Januar 2009 Autor Geschrieben 8. Januar 2009 jup habs hin bekommen mit den int .... blöder fehler! Allerings hab ich jetzt ein neues Problem. Ich will einen Struct in eine Datei schreiben. Es geht auch alles erstmalsoweit. Problem ist folgendes: Max | MÂustermann | 8888888888 | passwort | 55555555555 | 01108Dresden | Dresden | (null) Er hängt an die PLZ gleich noch den Ort dran und gibt ihr zusäzlich noch einmal aus. Woran kann das liegen? Der struct dazu: struct adresse { char plz[5]; char stadt[30]; }; struct benutzerdaten { char vname[30]; char nname[30]; char telefonnummer[12]; char passwort[30]; char kontonummer[10]; int rechte; struct adresse a; //siehe oben struct benutzerdaten *next; struct benutzerdaten *prev; }; sowie den Schreibpart: void write(void) { FILE *Ziel; struct benutzerdaten *zeiger; int i=0; Ziel = fopen("nutzer.txt", "w+b"); //r? if(Ziel == NULL) { printf("\224ffnen der Datei nutzer.txt fehlgeschlagen!"); getch(); } zeiger=anfang; while (zeiger!= NULL) { fprintf(Ziel, "%s | %s | %s | %s | %s | %s | %s | %s \n",zeiger->vname, zeiger->nname, zeiger->kontonummer, zeiger->passwort, zeiger->telefonnummer, zeiger->a.plz, zeiger->a.stadt, zeiger->rechte); zeiger=zeiger->next; } fclose(Ziel); }
Guybrush Threepwood Geschrieben 8. Januar 2009 Geschrieben 8. Januar 2009 Daran das dein Array für die Postleitzahl ein Feld zu klein ist? Du brauchst immer noch ein feld für die 0 die das Ende markiert
Daffi Geschrieben 8. Januar 2009 Autor Geschrieben 8. Januar 2009 Danke hat mein Problem teilweise gelöst. Max | Mustermann | 8888888888 | e | 55555555555 | 01108 | | (null) das steht jetzt da. Der Ort wird gar nicht mehr mit angegeben.
Klotzkopp Geschrieben 8. Januar 2009 Geschrieben 8. Januar 2009 das steht jetzt da. Der Ort wird gar nicht mehr mit angegeben. Woher sollen wir wissen, was du jetzt geändert hast?
Daffi Geschrieben 8. Januar 2009 Autor Geschrieben 8. Januar 2009 ich hab einfach nur das array für plz um 1 erhöht so wie er es mir gesagt hat. also plz[6].
AndiE Geschrieben 14. Januar 2009 Geschrieben 14. Januar 2009 Das kann auch nicht gehen. Du mußt die "int rechte" entweder als %i darstellen, oder mit "itoa" umwandeln. ich glaube, das ist der dritte Thread zu dem Thema.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden