Advertisement
weeez

C-s bead problémás

Oct 19th, 2015
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.08 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <fcntl.h> // for open()
  4. #include <errno.h> // for perror()
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. #include <string.h> //for strcpy()
  8. #include <unistd.h> //for file write()
  9. #include <time.h>
  10.  
  11. struct Kivansag {
  12.   char date[100];
  13.   char name[100];
  14.   char city[100];
  15.   char address[100];
  16.   char gift[100];
  17. };
  18.  
  19. const char *FILE_NAME = "kivansagok";
  20.  
  21. int isCorrect(char *answer);
  22. int isGift(char *choice);
  23. void fileHandler(int list_size, char gifts[1000]);
  24.  
  25. int main(){ //23
  26.   int list_size = 0;
  27.   FILE *list;
  28.   FILE *fileContents;
  29.   struct Kivansag gifts[1000];
  30.    
  31.     time_t     now;
  32.     struct tm *ts;
  33.     char       buf[100];
  34.  
  35.     //current time
  36.     now = time(NULL);
  37.  
  38.     //Format and print the time, "ddd yyyy-mm-dd hh:mm:ss zzz" */
  39.     ts = localtime(&now);
  40.     strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S (%a)", ts);
  41.  
  42.   if((fileContents= fopen(FILE_NAME, "rb")) == NULL){
  43.     if(errno == ENOENT){//if "kivansagok" file doesn't exists
  44.       printf("A file megnem letezik! Letrehozas...\n");
  45.       list = fopen(FILE_NAME,"wb");      
  46.       fwrite(&list_size, sizeof(list_size),1,list);
  47.       fclose(list);      
  48.     }else{
  49.       printf("Valami nagy hiba tortent! \n");
  50.       exit(1);
  51.     }
  52.     }else{
  53.     fread(&list_size, sizeof(list_size),1,fileContents);
  54.     if(list_size > 0){
  55.         int i; 
  56.  
  57.  
  58.        
  59.         for(i = 0; i < list_size; i++){
  60.           struct Kivansag kivansag;
  61.           fread(&kivansag, sizeof(kivansag),1,fileContents);
  62.           gifts[i] = kivansag;
  63.         }
  64.  
  65.     }
  66.     fclose(fileContents);  
  67.     fileHandler(list_size, gifts);
  68.    
  69. }
  70.  
  71.  
  72.      
  73.   return 0;
  74. }//30
  75.  
  76. void fileHandler(int list_size, char gifts[1000]){
  77.    
  78.       char answer[10];
  79.       int check = 0;
  80.       do{
  81.      
  82.         printf("\n*********************************************************\n");
  83.         printf("Udv a Mikulas kivansag kezelojen! Az alabbiak kozul valaszthat:\n"
  84.         "  (1) Uj kivansag felvete (Regit felulirja ! )\n"
  85.         "  (2) Kivansagok listazasa\n"
  86.         "  (3) Szures adott varosra\n"
  87.         "  (4) Szures adott ajandekra\n"
  88.         "  (5) Kilepes\n");
  89.         fgets(answer,10, stdin);
  90.  
  91.         check = isCorrect(answer);
  92.  
  93.         if(check < 1 || check > 5){
  94.           printf("\nHibas adatbevitel!\n");
  95.         }else{   
  96.           if(check == 1){
  97.             int volt_e = 0;
  98.             int position = 0;
  99.             struct Kivansag kivansag;
  100.            
  101.             strcpy(kivansag.date,buf);
  102.            
  103.             printf("Kerem adja meg a nevet!\n");
  104.             fgets(kivansag.name,sizeof(kivansag.name),stdin);
  105.             char *pos;
  106.             if ((pos=strchr(kivansag.name, '\n')) != NULL)
  107.                 *pos = '\0';
  108.                
  109.             int i;
  110.             for(i = 0; i < list_size; i++){        
  111.                if(strcmp(kivansag.name,gifts[i].name)==0){
  112.                    volt_e = 1;
  113.                    position = i;
  114.                }           
  115.             }
  116.                
  117.            
  118.             printf("Kerem adja meg a varosat!\n");
  119.             fgets(kivansag.city,sizeof(kivansag.city),stdin);
  120.             if ((pos=strchr(kivansag.city, '\n')) != NULL)
  121.                 *pos = '\0';
  122.            
  123.             printf("Kerem adja meg a pontos cimet!\n");        
  124.             fgets(kivansag.address,sizeof(kivansag.address),stdin);
  125.             if ((pos=strchr(kivansag.address, '\n')) != NULL)
  126.                 *pos = '\0';
  127.            
  128.             char choice[10];
  129.             printf("Kerem valasszon ajandekot!\n"
  130.               "  (1) baba\n"
  131.               "  (2) auto\n"
  132.               "  (3) labda\n"
  133.               "  (4) kirako\n"
  134.               "  (5) szinezo\n"
  135.               "  (6) konyv\n");
  136.             fgets(choice, 10, stdin);
  137.             int result = isGift(choice);
  138.             while(result == -1){
  139.                 printf("Kerem valasszon ajandekot!\n"
  140.                   "  (1) baba\n"
  141.                   "  (2) auto\n"
  142.                   "  (3) labda\n"
  143.                   "  (4) kirako\n"
  144.                   "  (5) szinezo\n"
  145.                   "  (6) konyv\n"              
  146.                 );
  147.                 fgets(choice, 10, stdin);  
  148.                 result = isGift(choice);
  149.             }
  150.             switch(result){
  151.               case 1:
  152.                 strcpy(kivansag.gift,"baba");
  153.                 break;
  154.               case 2:
  155.                 strcpy(kivansag.gift,"auto");
  156.                 break;
  157.               case 3:
  158.                 strcpy(kivansag.gift,"labda");
  159.                 break;
  160.               case 4:
  161.                 strcpy(kivansag.gift,"kirako");
  162.                 break;
  163.               case 5:
  164.                 strcpy(kivansag.gift,"szinezo");
  165.                 break;
  166.               case 6:
  167.                 strcpy(kivansag.gift,"konyv");
  168.                 break;
  169.               default:
  170.                 printf("\nvalami hiba lesz itt\n");
  171.                 break;
  172.             }
  173.             if(volt_e == 1){
  174.                gifts[position]= kivansag;
  175.                 list = fopen(FILE_NAME, "wb");
  176.                 fwrite(&list_size, sizeof(list_size),1,list);
  177.                 fwrite(&gifts, sizeof(gifts),1,list);
  178.                 fclose(list);
  179.             }else{
  180.                 ++list_size;           
  181.                 gifts[list_size-1] = kivansag;
  182.                 //printf("teszt: %s", gifts[0].name);
  183.                 list = fopen(FILE_NAME, "wb");
  184.                 fwrite(&list_size, sizeof(list_size),1,list);
  185.                 fwrite(&gifts, sizeof(gifts),1,list);
  186.                 fclose(list);
  187.             }
  188.           }
  189.           if(check == 2){
  190.             list = fopen(FILE_NAME, "rb");
  191.             fread(&list_size, sizeof(list_size),1,list);
  192.             fread(&gifts, sizeof(gifts), 1,list);
  193.             int i;
  194.             printf("\n");
  195.             for(i = 0; i < list_size; i++){
  196.                printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",gifts[i].date,gifts[i].name,gifts[i].city,gifts[i].address,gifts[i].gift);
  197.             }
  198.             printf("Listaelemek szama: %d\n",list_size);           
  199.           }
  200.           if(check == 3){
  201.             char answer[100];
  202.             printf("Adja meg a listazando varos nevet!\n");
  203.             fgets(answer, 100, stdin);
  204.             char *pos;
  205.             if ((pos=strchr(answer, '\n')) != NULL)
  206.                 *pos = '\0';           
  207.            
  208.             struct Kivansag subList[1000];
  209.             int count = 0;
  210.             int i;
  211.             for(i = 0; i < list_size; i++){            
  212.                if(strcmp(gifts[i].city,answer) == 0){
  213.                  subList[count] = gifts[i];
  214.                  ++count;
  215.                }
  216.             }
  217.             if(count > 0){
  218.                 printf("\n");
  219.                 for(i = 0; i < count; i++){
  220.                    printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",subList[i].date,subList[i].name,subList[i].city,subList[i].address,subList[i].gift);
  221.                 }
  222.                 printf("Szurt listaelemek szama: %d\n",count); 
  223.             }else{
  224.                 printf("Nem talaltam ilyen varost!\n");
  225.             }
  226.           }
  227.           if(check == 4){
  228.             char answer[100];
  229.             printf("Adja meg a listazando ajandek nevet!\n");
  230.             fgets(answer, 100, stdin);
  231.             char *pos;
  232.             if ((pos=strchr(answer, '\n')) != NULL)
  233.                 *pos = '\0';           
  234.            
  235.             struct Kivansag subList[1000];
  236.             int count = 0;
  237.             int i;
  238.             for(i = 0; i < list_size; i++){            
  239.                if(strcmp(gifts[i].gift,answer) == 0){
  240.                  subList[count] = gifts[i];
  241.                  ++count;
  242.                }
  243.             }
  244.             if(count > 0){
  245.                 printf("\n");
  246.                 for(i = 0; i < count; i++){
  247.                    printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",subList[i].date,subList[i].name,subList[i].city,subList[i].address,subList[i].gift);
  248.                 }
  249.                 printf("Szurt listaelemek szama: %d\n",count); 
  250.             }else{
  251.                 printf("Nem talaltam ilyen ajandekot!\n"); 
  252.             }        
  253.          
  254.          
  255.           }
  256.         }
  257.       } while(check != 5);
  258.  
  259.  
  260. }
  261.  
  262. int isCorrect(char answer[10]){
  263.    if(*answer >48 && *answer < 54){
  264.      if(*answer == 49) return 1;
  265.      if(*answer == 50) return 2;
  266.      if(*answer == 51) return 3;
  267.      if(*answer == 52) return 4;
  268.      if(*answer == 53) return 5;
  269.    }
  270.    
  271.    return -1;
  272. }
  273.  
  274. int isGift(char answer[10]){
  275.    if(*answer >48 && *answer < 55){
  276.      if(*answer == 49) return 1;
  277.      if(*answer == 50) return 2;
  278.      if(*answer == 51) return 3;
  279.      if(*answer == 52) return 4;
  280.      if(*answer == 53) return 5;
  281.      if(*answer == 54) return 6;
  282.    }
  283.    
  284.    return -1;
  285. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement