C program a funkciója a paramétereket , amit a felhasználó szeretne szűrni

Hogyan írjunk egy C program , hogy a funkció a paraméterek , amit a felhasználó szeretne szűrni ?


Solution:
  1.         /* TODO:
  2.                 A program elején megnézni, hogy van-e elemszám.txt, ha nincs, akkor billről olvasok, az olvasás végén kiírom az i értékét az elemszám.txt-be
  3.                 Utána kiírom az i darab letter-t (ami már meg van csinálva). Ha volt elemszám.txt, akkor beolvasom az elemszámot és a levelekből beolvasok elemszám darab levelet.
  4.                 Ezután az üres tömbbe belepakolom az olvasott leveleket, aztán billentyűről olvasunk, de úgy, hogy az i=elemszámmal, ebben az esetben
  5.                 a billről olvasás végén.
  6.                 Szűrések: a függvény paramétere az hogy a felhasználó mire akar szűrni
  7.         */
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <fcntl.h> //file control options
  11. #include <sys/types.h> //open
  12. #include <sys/stat.h>
  13. #include <errno.h> //perror, errno
  14. const int MAX = 256;
  15. typedef struct level
  16. {
  17.         char firstName[30];
  18.         char lastName[30];
  19.         char town[30];
  20.         char street[20];
  21.         int houseNumber;
  22.         char gift[30];
  23.         char date[11];
  24. } Letter;
  25. int elemszam_olvas();
  26. void elemszam_ir(int *i);
  27. void level_ir(Letter level[], int size);
  28. int main(int argc, char ** argv)
  29. {
  30.     Letter level[256];
  31.     Letter l;
  32.     char answer[] = "i";
  33.     int i = 0;
  34.     int j = 0;
  35.         int k = 0;
  36.         int m = 0;
  37.         int elemek = elemszam_olvas();
  38.     while(strcmp("n", answer) != 0) {
  39.         printf("Add meg a vezetekneved: ");
  40.         scanf("%s", &l.firstName);
  41.         printf("Add meg a keresztneved: ");
  42.                 scanf("%s", &l.lastName);
  43.         printf("Add meg a varosod nevet: ");
  44.         scanf("%s", &l.town);
  45.         printf("Add meg az utcat: ");
  46.         scanf("%s", &l.street);
  47.         printf("Add meg a hazszamot: ");
  48.         scanf("%d", &l.houseNumber);
  49.         printf("Add meg a kivant ajandekot: ");
  50.         scanf("%s", &l.gift);
  51.                 printf("Datum: ");
  52.         scanf("%s", &l.date);
  53.                 int update = 0;
  54.                 for (m=0; m<i; m++)
  55.         {  
  56.           if( (strcmp(level[m].firstName, l.firstName) == 0) &&
  57.               (strcmp(level[m].lastName, l.lastName) == 0))
  58.                           {
  59.                                   level[m] = l;
  60.                                   update = 1;
  61.                                   printf("update");
  62.                           }
  63.         }
  64.                
  65.                 if (update == 0){
  66.                         level[i]=l;
  67.                         printf("add");
  68.                         i += 1;
  69.                 }
  70.         printf("Van meg gyerek? i/n");
  71.         scanf("%s", &answer);
  72.         printf("\n");
  73.                
  74.                
  75.     }
  76.         elemszam_ir(&i);
  77.         level_ir(level, elemek);
  78.         printf("\nelemszam: %d", elemek);      
  79.         int fstatus4 = open("levelek",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
  80.         if(fstatus4 < 0)
  81.         {
  82.                 perror("Cannot open file levelek\n");
  83.                 exit(1);
  84.         }
  85.        
  86.         for (= 0; k < elemek; k++){
  87.                 Letter level;
  88.                 read(fstatus4,&level,sizeof(Letter));
  89.                
  90.                 if (strcmp(level.gift, "auto") == 0){
  91.                         printf("%s %s kert: %s -t\n", level.firstName, level.lastName, level.gift);
  92.                 }
  93.         }
  94.         close(fstatus4);
  95.         return 0;
  96. }
  97. int elemszam_olvas()
  98. {      
  99.         int elemszam;
  100.         int fstatus2 = open("elemszam.txt",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
  101.         if(fstatus2 < 0)
  102.         {
  103.                 perror("Cannot open file elemszam.txt\n");
  104.                 exit(1);
  105.         }
  106.         read(fstatus2,&elemszam,sizeof(int));
  107.         close(fstatus2);
  108.         return elemszam;
  109. }
  110. void elemszam_ir(int *i)
  111. {
  112.         int fstatus = open("elemszam.txt",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
  113.         if(fstatus < 0)
  114.         {
  115.                 perror("Cannot open file elemszam.txt\n");
  116.                 exit(1);
  117.         }
  118.         write(fstatus,&i,sizeof(int));
  119.         close(fstatus);
  120. }
  121. void level_ir(Letter level[], int size)
  122. {
  123.         int j = 0;
  124.         int fstatus3 = open("levelek",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
  125.         if(fstatus3 < 0)
  126.         {
  127.                 perror("Cannot open file levelek\n");
  128.                 exit(1);
  129.         }
  130.         for(= 0; j < size; j++)
  131.         {
  132.                 write(fstatus3,level[j],sizeof(Letter));
  133.         }
  134.         close(fstatus3);
  135. }


Learn More :