Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lab41.h"
person *personer[10];
int fillen;
int readfil(FILE *filen) {
int counter = 0;
int c;
char mystring[100];
person *p1;
while((c = fgetc(filen)) != EOF) {
p1 = malloc(sizeof(person));
fscanf(filen,"%s", &p1->fnamn);
fscanf(filen,"%s", &p1->enamn);
fscanf(filen,"%d", &p1->alder);
fscanf(filen,"%d", &p1->vikt);
personer[counter] = p1;
/*--------test ---------*/
printf("%s", personer[counter]->fnamn);
printf(" ");
printf("%s", personer[counter]->enamn);
printf("\n");
printf("%d", personer[counter]->alder);
printf("\n");
printf("%d", personer[counter]->vikt);
printf("\n");
/*--------slut test-------*/
counter++;
}
fillen = counter;
printf("\n---------------co--END---------------\n");
return 0;
}
int critter_cmp_namn (person *p1, person *p2)
{
return strcmp (p1->fnamn, p2->fnamn);
}
int skriv_ut_personer(FILE *filen, int val) {
int counter = 0;
while(counter < (fillen-1) ){
if(val == 1) {
fprintf(filen, "%s ", personer[counter]->fnamn);
fprintf(filen, "%s\n", personer[counter]->enamn);
fprintf(filen, "%d\n", personer[counter]->alder);
fprintf(filen, "%d\n", personer[counter]->vikt);
} else if (val == 0){
fprintf(stderr, "%s ", personer[counter]->fnamn);
fprintf(stderr, "%s\n", personer[counter]->enamn);
fprintf(stderr, "%d\n", personer[counter]->alder);
fprintf(stderr, "%d\n", personer[counter]->vikt);
}
counter++;
}
return 0;
}
int meny() {
int val;
char filnamn[40];
FILE *filen;
printf("\nMENY\n");
printf("1. Sotera efter namn\n");
printf("2. Sotera efter alder\n");
printf("3. Sotera efter vikt\n");
printf("4. Skriv ut till fil\n");
printf("5. Skriv ut till terminal\n");
printf("Ditt Val: ");
scanf("%d", &val);
if(val == 1)
{
qsort (*personer, fillen, sizeof (person), critter_cmp_namn);
meny();
}
else if (val == 2)
{
}
else if(val == 3) {
} else if(val == 4)
{
printf("Fil att skriva till: ");
scanf("%s", &filnamn);
if((filen = fopen(filnamn, "w")) == NULL) {
printf("går ej att skapa/öppna fil");
meny();
}
skriv_ut_personer(filen, 1);
}
else if(val == 5) {
skriv_ut_personer(NULL, 0);
} else {
printf("felaktigt val");
meny(filen);
}
return 0;
}
void main() {
int ett;
FILE *filen;
int val;
char filnamn[40];
enum filtyp {db,txt,bin};
typedef enum filtyp filtyp;
printf("Skriv filnamn: ");
scanf("%s", &filnamn);
if((filen = fopen(filnamn, "r")) == NULL) {
printf("file don't exist");
exit(1);
}
readfil(filen);
meny();
close(filen);
scanf("%d", ett);
}