Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <locale.h>
  4. #include <stdlib.h>
  5. struct C42
  6. {
  7.     char *name;
  8.     int year, oc;
  9.     char *hobby;
  10. };
  11.  
  12. void init(C42 * p, const char * n, int y, int o, const char * h)
  13. {
  14.     p->name = (char *)malloc(strlen(n) + 1);
  15.     strcpy((*p).name, n); // -> strcpy(p->name, n);
  16.     p->year = y;
  17.     p->oc = o;
  18.     p->hobby = (char *)malloc(strlen(h) + 1);
  19.     strcpy(p->hobby, h);
  20. }
  21.  
  22. void print(C42 * p)
  23. {
  24.     printf("%20s %3d %3d \"%s\"\n", p->name, p->year, p->oc, p->hobby);
  25. }
  26.  
  27. void print_array(C42 ** p, int sz)
  28. {
  29.     int i;
  30.     for(i=0;i<sz;i++)
  31.         print(p[i]);
  32. }
  33.  
  34. void init_array(C42 **p, int sz)
  35. {
  36.     int i;
  37.     for(i =0;i<sz;i++)
  38.         p[i] = (C42 *)malloc(sizeof(C42));
  39. }
  40.  
  41. void erase(C42** p, int sz)
  42. {
  43.     int i;
  44.     for(i=0;i<sz;i++)
  45.     {
  46.         free(p[i]->name);
  47.         free(p[i]->hobby);
  48.         free(p[i]);
  49.     }
  50. }
  51. int main()
  52. {
  53.     setlocale(LC_ALL, "Russian");
  54.     C42 *group[3];
  55.     init_array(group, 3);
  56.     init(group[0], "Петр Петров", 3, 4, "Компьютерные игры");
  57.     init(group[1], "Василий Васильев", 2, 5, "Программирование");
  58.     init(group[2], "Иван Иванович", 1, 0, "Мультипликация");
  59.     print_array(group, 3);
  60.     erase(group, 3);
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement