Advertisement
Guest User

Untitled

a guest
May 25th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.92 KB | None | 0 0
  1.  
  2. struct bdsm
  3. {
  4.     char* author;   // Автор
  5.     char* book;     // название книги
  6.     int edition;    // Тираж
  7.     double cost;    // Цена
  8. };
  9.  
  10. int addBook(bdsm *bd, int m, char*text)
  11. {
  12.     char *p3 = (char*)malloc(0);
  13.     int i = 0, j = 0, z = 0;
  14.  
  15.     while(i < strlen(text))
  16.         {
  17.             p3 = NULL;
  18.             free(p3);
  19.             p3 = (char*)malloc(0);
  20.  
  21.             j = 0;
  22.             for ((z==0) ? i=0 : i++; (text[i] != ' ' && text[i] != '\n' && text[i] != '\0') && i < strlen(text); i++)
  23.             {
  24.                     if (text[i + 1] != ' ')
  25.                         p3 = (char*)realloc(p3, sizeof(char)*(j + 1));
  26.                     p3[j] = text[i];
  27.                     j++;
  28.             }
  29.             p3[j] = '\0';
  30.  
  31.        
  32.             switch(z) {
  33.                 case 0:
  34.                     bd[m].author = new char[strlen(p3) + 1];
  35.                     strcpy(bd[m].author, p3);
  36.                     break;
  37.                 case 1:
  38.                     bd[m].book = new char[strlen(p3) + 1];
  39.                     bd[m].book = p3;
  40.                     break;
  41.                 case 2:
  42.                     bd[m].edition = atoi(p3);
  43.                     break;
  44.                 case 3:
  45.                     bd[m].cost = atof(p3);
  46.                     break;
  47.             }
  48.             z++;
  49.         }
  50.         m++;
  51.     return m;
  52. }
  53.  
  54. int load(bdsm *bd,int m) {
  55.     ifstream db(dbFile); //файл бд.
  56.     if(db.fail()) //если реад онли ИЛИ НЕ СУЩЕСТВУЕТ (создай его перед запуском программы. Если компилить, кидай в папку с исходным кодом)
  57.         return -1;
  58.     else
  59.         if(db.eof()) //Это, если БД пуста.
  60.         return 0;
  61.  
  62.     char c, *text = (char*)malloc(0);
  63.     text = NULL;
  64.  
  65.     int i = 0,z=0;
  66.     text = (char*)realloc(text, sizeof(char)*(z + 1));
  67.     while (db.get(c) && text[i]!='\0')
  68.     {
  69.         text = (char*)realloc(text, sizeof(char)*(i + 1));
  70.         text[i] = c;
  71.         i++;
  72.         if(c=='\n'||c=='\0') {
  73.             text[i]='\0';
  74.             m=addBook(bd, m, text);
  75.             text = NULL;
  76.             free(text);
  77.             text = (char*)malloc(0);
  78.             i=0;
  79.         }
  80.     }
  81.     if(i!=0) {
  82.         text[i]='\0';
  83.         m=addBook(bd, m, text);
  84.         text = NULL;
  85.         free(text);
  86.     }
  87.     return m;
  88. }
  89.  
  90. void save(bdsm *bd, int n) {
  91.     char*writeLine = "", c = ' ';
  92.     ofstream saveFile(dbFile, ios_base::out | ios_base::trunc);
  93.     for(; n>0; n--)
  94.     {
  95.         saveFile<<bd[n-1].author<<" "<<bd[n-1].book<<" "<<bd[n-1].edition<<" "<<bd[n-1].cost<<endl; //Всё в программе хранится в таком виде. Хочешь выводить текст, сравнивай нужные элементы и выводи именно в таком виде. Структура для примера наверху.
  96.     }
  97.     saveFile.close();
  98.    
  99. }
  100.  
  101. int start(bdsm *bd,int m) {
  102.     m=load(bd,m);
  103.     cout<<m;
  104.     return m;
  105. }
  106.  
  107.  
  108. /////
  109.  
  110. bdsm *bd = new bdsm[1]; //структура
  111.     int m = start(bd,0); //Начальное значение элементов. Крч, через AddBook и load прогоняется массив из всех символов, разделяется по строкам и заполняется в структуру. ну и m плюсуется. В конце выдается ровное количество, сколько элементов в структуре.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement