006
22.01.2005, 18:22 Uhr
sedo
|
In dieser Funktion reserviere ich den Speicher und lege Adressen an:
C++: |
int adresseAnl (struct ListEl **list) { counter++; char nachn[80], vorn[80], strasse[80], ort[80], feld[10]={"gueltig"}; char plz[80];
printf("Bitte geben Sie einen Nachnamen ein: "); scanf("%s", &nachn); printf("Bitte geben Sie einen Vornamen ein: "); scanf("%s", &vorn);
printf("Bitte geben Sie eine Strasse ein: "); scanf("%s", &strasse);
printf("Bitte geben Sie eine Postleitzahl ein: "); scanf("%s", &plz);
printf("Bitte geben Sie den Ort ein: "); scanf("%s", &ort);
// Neues Listenelement anlegen neu = (struct ListEl *) malloc(sizeof(struct ListEl)); strcpy(neu->nachn,nachn); strcpy(neu->vorn, vorn); strcpy(neu->strasse, strasse); strcpy(neu->postl, plz); strcpy(neu->ort, ort); strcpy(neu->feld,"gueltig");
if(*list == NULL ||((stricmp(nachn,(*list)->nachn)) < 0)) { // Einfügen Listenanfang neu->next = *list; *list = neu; }
else
{ // Einfügen Listenmitte vorg = *list; nachf = (*list)->next;
// Einfügeposition suchen while(nachf != NULL && (stricmp(nachf->nachn,nachn)< 0)) { vorg = vorg->next; nachf = nachf->next; }
// Einketten neu->next = nachf; vorg->next = neu; }
return 0; system("cls"); }
|
Hier speichere ich die Adressen in eine Datei auf der Festplatte:
C++: |
int adresseSp(struct ListEl **list, char datei[20])
{ FILE *fp; fp = fopen(datei,"a");
fseek(fp,0*sizeof(char),SEEK_SET); if(fp == NULL)
{ printf("Fehler beim Erzeugen der Datei!"); return 0; } if (*list == NULL)
{ printf("Keine Adressen zum Abspeichern vorhanden!\n\n"); return 0; } if(stricmp((*list)->feld,"falsch")) { fprintf(fp, "%s",((*list)->nachn)); fprintf(fp, "\n"); fprintf(fp, "%s",((*list)->vorn)); fprintf(fp, "\n"); fprintf(fp, "%s",((*list)->strasse)); fprintf(fp, "\n"); fprintf(fp, "%s",((*list)->postl)); fprintf(fp, "\n"); fprintf(fp, "%s",((*list)->ort)); fprintf(fp, "\n"); fprintf(fp, "%s",((*list)->feld)); fprintf(fp, "\n"); fprintf(fp, "\n");
} fclose(fp); if(((*list)->next) != NULL)
{ return (adresseSp((&((*list)->next)),datei)); } free(neu); return 0; }
|
Nachdem ich alle Adressen gespeicher habe möchte den Arbeitsspeicher leeren, damit ich nicht alle Adressen doppelt habe, wenn ich die Datei öffne.
Wenn ich hier free(neu) hinschreibe, bringt er den Fehler, und kann mir free(neu) nichts anfangen. |