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! Zitieren
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. Zitieren
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); } Zitieren
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 Zitieren
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. Zitieren
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? Zitieren
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]. Zitieren
Klotzkopp Geschrieben 8. Januar 2009 Geschrieben 8. Januar 2009 Dann ist noch etwas anderes falsch. Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.