#include #include #include #define MAX_NAMN_LANGD 256 #define MAX_ADRESS_LANGD 256 #define MAX_POST_LANGD 256 struct t_adress { char fornamn[MAX_NAMN_LANGD]; char efternamn[MAX_NAMN_LANGD]; char gatuadress[MAX_ADRESS_LANGD]; int postnummer; char postanstalt[MAX_POST_LANGD]; }; struct t_nod { struct t_nod *next; struct t_adress adress; }; struct t_adress lasinadress() { char racka[MAX_NAMN_LANGD]; struct t_adress adress; /* Läs in i strukturen: */ printf("Ge förnamn: "); fgets(adress.fornamn, MAX_NAMN_LANGD, stdin); adress.fornamn[strlen(adress.fornamn)-1] = '\0'; printf("Ge efternamn: "); fgets(adress.efternamn, MAX_NAMN_LANGD, stdin); printf("Ge postnummer: "); fgets(racka, MAX_NAMN_LANGD, stdin); /* Konvertera från teckensträng till heltal */ sscanf(racka, "%d", &adress.postnummer); return adress; } struct t_nod *laggtilladress(struct t_nod *head, struct t_adress adress) { struct t_nod *nod=head, *next; while (nod) { nod = nod->next; } next = (struct t_nod *)malloc(sizeof(struct t_nod)); next->next = NULL; next->adress = adress; if (!nod) return next; nod->next = next; return head; } void raderalista(struct t_nod *head) { struct t_nod *nod, *next; for (nod=head; nod; nod=next) { next = nod->next; free(nod); } } int main(int argc, char *argv[]) { FILE *utfil; struct t_adress adress; struct t_nod *head = NULL; struct t_nod *nod; adress = lasinadress(); if (strcmp(adress.fornamn,"") != 0) { head = laggtilladress(head, adress); } /************************************/ /* skriv ut till fil */ /* Öppna filen */ utfil = fopen(argv[1], "w"); if (!utfil) {printf("Fel vid öppning av fil...\n"); exit(0); } fprintf(utfil, "%s %s\n", adress.fornamn, adress.efternamn); fclose(utfil); }