Guest User

Untitled

a guest
May 27th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.94 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. #define FNAME 10
  5.  
  6.  
  7.  
  8. struct dane {
  9.     int id;
  10.     char fname [FNAME];
  11. };
  12.  
  13. struct ABOOK {
  14.   struct dane osoba;
  15.   struct ABOOK *next;
  16. };
  17.  
  18.  
  19.  
  20. int insert(struct ABOOK *p,struct ABOOK **root)
  21. {
  22.    if (*root && (*root)->osoba.id == p->osoba.id)
  23.      return 1;       /* already present */
  24.    if (!*root) {     /* empty tree */
  25.      *root = p;
  26.      return 0;
  27.    }
  28.    else insert(p,&((*root)->next));
  29.    return 0;
  30. }
  31. int ins_el(struct ABOOK **root)
  32. {
  33.     struct ABOOK *p;
  34.     p = (struct ABOOK*)malloc(sizeof(struct ABOOK));
  35.     if (!p) return 2; /* out of memory */
  36.  
  37.     printf("\nID : ");
  38.     scanf("%d",&p->osoba.id);
  39.     printf("\nFirst name : ");
  40.     scanf("%s",&p->osoba.fname);
  41.     p->next = NULL;
  42.     return insert(p,root);
  43.     free(p);
  44. }
  45.  
  46. void print_tree(struct ABOOK *node)
  47. {
  48.   if (node)
  49.   {
  50.     printf("%d. %s ",node->osoba.id,node->osoba.fname);
  51.     print_tree(node->next);
  52.   }
  53. }
  54.  
  55. void save(struct ABOOK *node)
  56. {
  57.     FILE *fp;
  58.     struct dane *tmp;
  59.  
  60.     tmp = (struct dane*)malloc(sizeof(struct dane));
  61.     fp = fopen("katalog.db", "wb");
  62.    
  63.     while (node)  {
  64.         *tmp=node->osoba;
  65.         fwrite(tmp, sizeof(struct dane), 1, fp); // zapisuje całą strukture ABOOK
  66.         node = node->next;
  67.     }
  68.     fclose(fp);
  69.     free(tmp);
  70. }
  71.  
  72. void load(struct ABOOK *node)
  73. {
  74.     FILE *fp;
  75.     struct dane *tmp = NULL;
  76.    
  77.     tmp = (struct dane*)malloc(sizeof(struct dane));
  78.     fp = fopen("katalog.db", "rb");
  79.  
  80.     fread(tmp, sizeof(struct dane), 1, fp);
  81.     do
  82.     {
  83.         node->osoba=*tmp;
  84.         printf("\n%d %s",tmp->id, tmp->fname);
  85.         node->next=(struct ABOOK*)malloc(sizeof(struct ABOOK));
  86.         node = node->next;
  87.         fread(tmp, sizeof(struct dane), 1, fp);
  88.     }while(!feof(fp));
  89.     fclose(fp);
  90.     free(tmp);
  91. }
  92.  
  93. int main()
  94. {
  95.   struct ABOOK *root = NULL;  
  96.  
  97.  
  98.  
  99.  // ins_el(&root);  //<--- wczytuje ID oraz FNAME
  100.  // ins_el(&root);  
  101.  // ins_el(&root);
  102.  
  103.   load(root);
  104.   //print_tree(root);  //<--- wyświetla
  105.  // save(root);
  106.  
  107.  
  108.   return 0;
  109. }
Add Comment
Please, Sign In to add comment