Guest User

Untitled

a guest
Apr 21st, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct elem{
  6.     char nev[31];
  7.     int ear;
  8.     int db;
  9. };
  10.  
  11. int sorok(char* fn){
  12.     int retval = 1;
  13.     FILE * fl = fopen(fn, "r");
  14.     char buf;
  15.     while(!feof(fl)){
  16.         if(fread(&buf, sizeof(char), 1, fl) && buf == '\n')retval++;
  17.     }
  18.     fclose(fl);
  19.     return retval;
  20. }
  21.  
  22. void torol(struct elem ** praktar){
  23.     if(*praktar != NULL){
  24.         free(*praktar);
  25.         *praktar = NULL;
  26.     }
  27. }
  28.  
  29. void foglal(struct elem ** praktar, int x){
  30.     *praktar = (struct elem*)malloc(sizeof(struct elem)*x);
  31. }
  32.  
  33. int beolvas(struct elem ** praktar){
  34.     torol(praktar);
  35.     char fn[65];
  36.     printf("File neve: ");
  37.     scanf("%s", fn);
  38.     int sr = sorok(fn);
  39.     foglal(praktar, sr);
  40.     FILE * fl = fopen(fn, "r");
  41.     int idxA;
  42.     for(idxA = 0; idxA < sr; idxA++){
  43.         fscanf(fl, "%s", (*praktar+idxA)->nev);
  44.         fscanf(fl, "%d", &(*praktar+idxA)->ear);
  45.         fscanf(fl, "%d", &(*praktar+idxA)->db);
  46.     }
  47.     fclose(fl);
  48.     return sr;
  49. }
  50.  
  51. void kiir(struct elem * raktar, int sorok){
  52.     if(raktar == NULL){
  53.             printf("Nincs mit kiirni, a lista üres...");
  54.         } else {
  55.         int idxA;
  56.         printf("A lista:\n");
  57.         for(idxA = 0; idxA < sorok; idxA++){
  58.             printf("Nev: %s - E.ar: %d - Darab: %d\n", (raktar+idxA)->nev, (raktar+idxA)->ear, (raktar+idxA)->db);
  59.         }
  60.     }
  61. }
  62.  
  63. void keres(struct elem * raktar, int sr){
  64.     if(raktar == NULL){
  65.         printf("Nincs mit keresni, a lista üres...");
  66.         return;
  67.     }
  68.     char nev[31];
  69.     printf("Mire szeretnel rakeresni?");
  70.     scanf("%s", nev);
  71.  
  72.     int idxA;
  73.     for(idxA = 0; idxA < sr && strcmp(nev, raktar[idxA].nev); idxA++);
  74.     if(idxA == sr){
  75.         printf("Nincs ilyen...\n");
  76.     } else {
  77.         printf("Nev: %s - E.ar: %d - Darab: %d\n", (raktar+idxA)->nev, (raktar+idxA)->ear, (raktar+idxA)->db);
  78.     }
  79.     //printf("%d", strcmp(nev, raktar[idxA].nev));
  80.  
  81. }
  82.  
  83. int minput(){
  84.     printf("Valassz a menupontok kozul:\n");
  85.     printf("1. Lista betoltese\n2. Kereses\n3. Listazas\n4. Kilepes");
  86.     int o=-1;
  87.     scanf("%d", &o);
  88.     return o;
  89. }
  90.  
  91. int main(void) {
  92.     setbuf(stdout, 0);
  93.     struct elem * raktar = NULL;
  94.     int sr = -1;
  95.     int o = -1;
  96.     while(o != 4){
  97.         switch((o = minput())){
  98.             case 1:
  99.                 sr = beolvas(&raktar);
  100.             break;
  101.             case 2:
  102.                 keres(raktar, sr);
  103.             break;
  104.             case 3:
  105.                 kiir(raktar, sr);
  106.             break;
  107.             case 4:
  108.                 torol(&raktar);
  109.                 printf("A program kilep... A memoria fellelegzik\n");
  110.             break;
  111.             default:
  112.                 printf("Hibas bemenet!\n");
  113.             break;
  114.         }
  115.     }
  116.  
  117.     return EXIT_SUCCESS;
  118. }
Add Comment
Please, Sign In to add comment