/* Det här är ett skelett för en möjlig lösning på C/C++ Labb 2 uppgift 1. Kom gärna med egna lösningsförslag! Finns säkert bättre sätt att lösa uppgiften på också. */ // Inkludera nödvändiga bibliotek. #define MAX_LANGD 255 typedef struct t_adress { char fornamn[MAX_LANGD]; char efternamn[MAX_LANGD]; char gatuadress[MAX_LANGD]; int postnummer; char postanstalt[MAX_LANGD]; } kontakt; /* Läser in en adress */ void las_in_adress(kontakt *adress); /* Läser in en textrad och tar bort newline tecknet */ void las_rad(char *string, int maxlangd); /* Skriver ut adressinformation lagrad i en struct t_adress (= kontakt) */ void skriv_ut_adress(struct t_adress *adress); int main(int argc, char *argv[]) { FILE *p_file = NULL; kontakt adress; // Kolla att vi har gett ett argument till programmet om vi tar in filnamnet som argument. if (argc < 2) { perror("Ge filnamn som ett argument till programmet!"); return -1; } /* Om fopen returnerar NULL då vi försöker öppna filen för läsning, och det berodde på att filen inte existerar, öppna filen för skrivning istället. */ if ((p_file = fopen(/* Öppna fil för läsning (binär) */)) == NULL) { if (errno == /* Sök det rätta felmeddelandet i errno.h */) { if ((p_file = fopen(/* Öppna fil för skrivning (binär) */)) == NULL) { perror("Kunde inte öppna filen för skrivning"); } else { las_in_adress(&adress); fwrite(/* fwrite parametrar */); fclose(p_file); //Kom ihåg att stänga filen } } else perror("Fel med öppnande av fil för läsning"); } else { fread(/* Läs in en adresstruktur från filen */); fclose(p_file); skriv_ut_adress(&adress); } } void las_in_adress(kontakt *adress) { char temp[MAX_LANGD]; printf("Namn: "); las_rad(adress->fornamn, MAX_LANGD); /* Osv... */ } void las_rad(char *string, int maxlangd) { fgets(string, maxlangd, stdin); string[strlen(string)-1] = '\0'; } void skriv_ut_adress(struct t_adress *adress) { printf(/* bla bla */ , adress->fornamn, adress->efternamn, adress->gatuadress, adress->postnummer, adress->postanstalt); }