Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <windows.h>
- #define FNAME 10
- struct dane {
- int id;
- char fname [FNAME];
- };
- struct ABOOK {
- struct dane osoba;
- struct ABOOK *next;
- };
- int insert(struct ABOOK *p,struct ABOOK **root)
- {
- if (*root && (*root)->osoba.id == p->osoba.id)
- return 1; /* already present */
- if (!*root) { /* empty tree */
- *root = p;
- return 0;
- }
- else insert(p,&((*root)->next));
- return 0;
- }
- int ins_el(struct ABOOK **root)
- {
- struct ABOOK *p;
- p = (struct ABOOK*)malloc(sizeof(struct ABOOK));
- if (!p) return 2; /* out of memory */
- printf("\nID : ");
- scanf("%d",&p->osoba.id);
- printf("\nFirst name : ");
- scanf("%s",&p->osoba.fname);
- p->next = NULL;
- return insert(p,root);
- free(p);
- }
- void print_tree(struct ABOOK *node)
- {
- if (node)
- {
- printf("%d. %s ",node->osoba.id,node->osoba.fname);
- print_tree(node->next);
- }
- }
- void save(struct ABOOK *node)
- {
- FILE *fp;
- struct dane *tmp;
- tmp = (struct dane*)malloc(sizeof(struct dane));
- fp = fopen("katalog.db", "wb");
- while (node) {
- *tmp=node->osoba;
- fwrite(tmp, sizeof(struct dane), 1, fp); // zapisuje całą strukture ABOOK
- node = node->next;
- }
- fclose(fp);
- free(tmp);
- }
- void load(struct ABOOK *node)
- {
- FILE *fp;
- struct dane *tmp = NULL;
- tmp = (struct dane*)malloc(sizeof(struct dane));
- fp = fopen("katalog.db", "rb");
- fread(tmp, sizeof(struct dane), 1, fp);
- do
- {
- node->osoba=*tmp;
- printf("\n%d %s",tmp->id, tmp->fname);
- node->next=(struct ABOOK*)malloc(sizeof(struct ABOOK));
- node = node->next;
- fread(tmp, sizeof(struct dane), 1, fp);
- }while(!feof(fp));
- fclose(fp);
- free(tmp);
- }
- int main()
- {
- struct ABOOK *root = NULL;
- // ins_el(&root); //<--- wczytuje ID oraz FNAME
- // ins_el(&root);
- // ins_el(&root);
- load(root);
- //print_tree(root); //<--- wyświetla
- // save(root);
- return 0;
- }
Add Comment
Please, Sign In to add comment