#include #define MAXNAMN 32 #define MAXNUMM 32 #define MAXKATALOG 128 struct person { int id; char namn[MAXNAMN]; char numm[MAXNUMM]; }; int skrivutkatalog(struct person katalog[], int n) { int i; printf("\t%-8s %-8s %-16s %-16s\n", "Nr.", "Id", "Namn", "Telefon"); printf("\t%-8s %-8s %-16s %-16s\n\n", "---", "--", "----", "----"); for (i = 0; i < n; ++i) printf("\t%-8d %-8d %-16s %-16s\n", i, katalog[i].id, katalog[i].namn, katalog[i].numm); return 0; } int avsluta() { printf("\n\tVi ses\n\n"); return 0; } int readDb(struct person katalog[], int n) { #define buffsiz 128 char buff[buffsiz]; FILE *dbf; printf("\n\tKatalogen heter: "); scanf("%s", buff); dbf = fopen(buff, "r"); while (fscanf(dbf, "%d %s %s", &katalog[n].id, katalog[n].namn, katalog[n].numm) == 3) ++n; fclose(dbf); return n; } int sokid(struct person katalog[], int n) { /* kod */ return 0; } int laeggtill(struct person katalog[], int n) { printf("\n\t Namn: "); scanf("%s", katalog[n].namn); printf("\t Id: "); scanf("%d", &katalog[n].id); printf("\tNummer: "); scanf("%s", katalog[n].numm); return n + 1; } int tabort(struct person katalog[], int n) { /* kod */ return n; } int meny(){ printf("\n"); printf("\t0: Avsluta\n"); printf("\t1: Läs katalogen\n"); printf("\t2: Visa katalogen\n"); printf("\t3: Sök efter Id\n"); printf("\t4: Lägg till person\n"); printf("\t5: Ta bort person\n"); printf("\n\tGör ditt val: "); return 0; } int main() { struct person katalog[MAXKATALOG]; int katalogstorlek = 0; int val; do { meny(); scanf("%d", &val); printf("\n"); if (val == 0) avsluta(); else if (val == 1) katalogstorlek = readDb(katalog, katalogstorlek); else if (val == 2) skrivutkatalog(katalog, katalogstorlek); else if (val == 3) sokid(katalog, katalogstorlek); else if (val == 4) katalogstorlek = laeggtill(katalog, katalogstorlek); else if (val == 5) katalogstorlek = tabort(katalog, katalogstorlek); else printf("\t\tOgiltgt val!\n\n"); } while (val != 0); return 0; }