Пишу в Студії 2013. Ось результат компіляції:
1>------ Сборка начата: проект: Проект4, Конфигурация: Debug Win32 ------
1>  Исходный код.cpp
1>  Проект4.vcxproj -> C:\Users\Serg\Documents\Visual Studio 2013\Projects\Проект4\Debug\Проект4.exe
========== Сборка: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========
Виправив те, що показали, окрім 234 (змінив код) і так і не зрозумів про що йдеться. Можете ще раз проглянути
/*Предметна область - бібліотека.
Розв'язувані задачі: видача довідок про наявність книг, журналів, газет. Реалізувати наступні сервіси:
Заповнення бази даних
Перегляд даних про всі джерела
Доповнення бази даних записом джерела
Видалення джерела із бази даних
Упорядкування по полях: тип інформаційного джерела (книга, журнал, газета) і назва
Пошук: наявність заданої книги (відомі автор і назва), наявність заданого журналу
Вибірка: книги автора ХХ; книги певної категорії (фантастика, детектив тощо), журнали за певний рік (відомі рік і назва журналу)
Обчислення: кількість книг деякої категорії
Корекція: видалення зведень про газети за певний рік
Табличний звіт: список боржників книг певного автора
Для обробки даних скористатися динамічним масивом покажчиків на структури відповідного типу.
*/
#include <ctime>
#include <iomanip>
#include <iostream>
#include <string>
#include <fstream>
#include<windows.h>
using namespace std;
struct Date
{
    int day;
    int month;
    int year;
};
struct Item
{
    int serial_number;
    string source_type;
    string name;
    string author;
    int year;
    string genre;
    string publisher;
    string is_given;
};
#pragma region Show_library
//Вивід бібліотеки на екран
void print_source(Item *source)
{
    cout << setw(17) << "Serial number" << " :   " << source->serial_number << endl
        << setw(17) << left << "Type" << " :   " << source->source_type << endl
        << setw(17) << left << "Name" << " :   " << source->name << endl
        << setw(17) << left << "Author" << " :   " << source->author << endl
        << setw(17) << left << "Date" << " :   " << source->year << endl
        << setw(17) << left << "Genre" << " :   " << source->genre << endl
        << setw(17) << left << "Publiher" << " :   " << source->publisher << endl
        << setw(17) << left << "Given to" << " :   " << source->is_given << endl
        << "--------------------------------------------------------------------------------" << endl;
}
void print_sources(Item *sources, const int quantity)
{
    //cout << setw(20) << "Book name" << setw(20) << "Author" << setw(15) << "Publisher" << setw(15) << "Genre" << endl;
    cout << "List of sources" << endl << endl;
    for (Item *ptr = sources; ptr < sources + quantity; ++ptr)
    {
        print_source(ptr);
    }
}
#pragma endregion
#pragma region Save_file
void save_file(Item *sources, const int file_size)
{
    char confirm;
    system("cls");
    do
    {
        cout << "Are you sure you want to save changes? y/n : ";
        cin >> confirm;
    } while (confirm != 'y' && confirm != 'n');
    if (confirm == 'y')
    {
        string outFileName = "Library.txt";
        ofstream outFile;
        outFile.open(outFileName, ios_base::out);
        if (!outFile.is_open())
        {
            cout << "Can't open " << outFileName << " for writing. Exiting..." << endl;
            system("pause");
            exit(1);
        }
        outFile << file_size;
        for (Item *ptr = sources; ptr < sources + file_size; ++ptr)
        {
            outFile << endl
                << ptr->serial_number << ";"
                << ptr->source_type << ";"
                << ptr->name << ";"
                << ptr->author << ";"
                << ptr->year << ";"
                << ptr->genre << ";"
                << ptr->publisher << ";"
                << ptr->is_given << ";";
        }
        outFile.close();
        cout << endl << "File saved" << endl << endl;
    }
    else
    {
        cout << endl << "Changes declined" << endl << endl;
    }
}
#pragma endregion
#pragma region Add_source
//заповнення бібліотеки користувачем
void get_sources_from_user(Item *source, int index)
{
    source->serial_number = index;
    int type = 0;
    do
    {
        cout << "Choose source type :" << endl
            << "1. Book" << endl
            << "2. Magazine" << endl
            << "3. News paper" << endl << endl
            << "Make a choice : ";
        cin >> type;
    } while (type < 1 || type > 3);
    switch (type)
    {
    case 1: source->source_type = "book";
        break;
    case 2: source->source_type = "magazine";
        break;
    case 3: source->source_type = "news paper";
        break;
    default:
        cout << "Wrong choice!" << endl;
        break;
    }
    cin.ignore();
    //cout << "Enter source type (book, magazine, news paper) : ";
    //getline(cin, source->source_type);
    cout << "Type the name of a source : ";
    getline(cin, source->name);
    cout << "Type the author of a source : ";
    getline(cin, source->author);
    cin >> source->year;
    //bool correct = false;
    //do
    //{
    //    cout << "Type the date of a source (01 12 2016) : ";
    //    cin >> sources[i].date.day >> sources[i].date.month >> sources[i].date.year;
    //    if (sources[i].date.day < 1 || sources[i].date.day > 31)
    //    {
    //        sources[i].date.day = NULL;
    //        correct = true;
    //    }
    //    else if (sources[i].date.month < 1 || sources[i].date.month > 12)
    //    {
    //        sources[i].date.month = NULL;
    //        correct = true;
    //    }
    //    else if (sources[i].date.year > 2016)
    //    {
    //        cout << "You've entered invalid year" << endl;
    //        correct = false;
    //    }
    //    else
    //    {
    //        correct = true;
    //    }
    //} while (correct != true);
    cout << "Type the publisher of a source : ";
    getline(cin, source->publisher);
    cout << "Type the genre of a source : ";
    getline(cin, source->genre);
    source->is_given = "no information";
}
void move_source(Item *src, const int count, Item *dst)
{
    for (Item *src_ptr = src, *dst_ptr = dst; src_ptr < src + count; ++dst_ptr, ++src_ptr)
    {
        //*dst_ptr = *src_ptr;
        //src_ptr = nullptr;
        dst_ptr->serial_number = src_ptr->serial_number;
        dst_ptr->source_type = src_ptr->source_type;
        dst_ptr->name = src_ptr->name;
        dst_ptr->author = src_ptr->author;
        dst_ptr->year = src_ptr->year;
        dst_ptr->genre = src_ptr->genre;
        dst_ptr->publisher = src_ptr->publisher;
        dst_ptr->is_given = src_ptr->is_given;
    }
}
Item* AddStruct(Item* source, int *file_size)
{
    int newSize = *file_size + 1;
    if (*file_size == 0)
    {
        source = new Item[newSize]; // виділення пам'яті для першої структури
    }
    else
    {
        Item *new_source = new Item[newSize];
        move_source(source, *file_size, new_source);
        print_sources(new_source, newSize);
        get_sources_from_user((new_source + newSize), newSize);
        delete[] source;
        source = new_source;
        delete[] new_source;
    }
    *file_size = newSize;
    return source;
}
void add_source(Item *sources, int file_size)
{
    char YesOrNot;
    do
    {
        sources = AddStruct(sources, &file_size);
        file_size++;
        do
        {
            cout << "Add onather source? (y/n): ";
            cin >> YesOrNot;
            cin.get();
        } while (YesOrNot != 'y' || YesOrNot != 'n');
        if (YesOrNot = 'n')
        {
            save_file(sources, file_size);
        }
    } while (YesOrNot != 'n');
    print_source(sources + file_size);
}
#pragma endregion
#pragma region Edit_source
//Редагування
void edit_book(Item *sources, const int quantity)
{
    system("cls");
    print_sources(sources, quantity);
    int choice;
    enum parameters
    {
        Exit,
        source_type,
        name,
        author,
        year,
        genre,
        publisher
    };
    do
    {
        cout << "Enter the number of book to edit : ";
        cin >> choice;
    } while (choice < 1 || choice > quantity);
    choice -= 1;
    int choice_parameter;
    do
    {
        cout << "You are about to edit " << sources[choice].name << endl << endl
            << source_type << ". Source type" << endl
            << name << ". Name" << endl
            << author << ". Author" << endl
            << year << ". Year of publication" << endl
            << genre << ". Genre" << endl
            << publisher << ". Publisher" << endl
            << Exit << ". Exit" << endl << endl;
        do
        {
            cout << "Enter the parameter to edit : ";
            cin >> choice_parameter;
        } while (choice_parameter < 0 || choice_parameter > 6);
        cin.ignore();
        switch (choice_parameter)
        {
        case parameters::source_type:
        {
            int type = 0;
            do
            {
                cout << "Choose a source type :" << endl
                    << "1. Book" << endl
                    << "2. Magazine" << endl
                    << "3. News paper" << endl << endl
                    << "Make a choice : ";
                cin >> type;
            } while (type < 1 || type > 3);
            switch (type)
            {
            case 1: (sources + choice)->source_type = "book";
                break;
            case 2: (sources + choice)->source_type = "magazine";
                break;
            case 3: (sources + choice)->source_type = "news paper";
                break;
            default:
                cout << "Wrong choice!" << endl;
                break;
            }
        }
        break;
        case parameters::name:
        {
            cout << "Enter new name of the book : ";
            getline(cin, sources[choice].name);
        }
        break;
        case parameters::author:
            cout << "Enter new author of the book : ";
            getline(cin, sources[choice].author);
            break;
        case parameters::year:
            cout << "Enter new year of publication : ";
            cin >> sources[choice].year;
            break;
        case parameters::genre:
            cout << "Enter new genre of the book : ";
            getline(cin, sources[choice].genre);
            break;
        case parameters::publisher:
            cout << "Enter new publisher of the book : ";
            getline(cin, sources[choice].publisher);
            break;
        case parameters::Exit:
            cout << "Good bye!" << endl;
        default:
            break;
        }
        cout << endl << "Edited source :" << endl;
        print_source(sources + choice);
    } while (choice_parameter != 0);
    save_file(sources, quantity);
}
#pragma endregion
#pragma region Sorting
//Сортировка массива по названию книг
void sort_by_name(Item *sources, const int quantity)
{
    for (int i = 0; i < quantity; ++i)
    {
        for (int j = 0; j < quantity - 1 - i; ++j)
        {
            if (sources[j].name > sources[j + 1].name)
            {
                swap(sources[j], sources[j + 1]);
            }
        }
    }
}
//Сортировка массива по автору
void sort_by_author(Item *sources, const int quantity)
{
    for (int i = 0; i < quantity; ++i)
    {
        for (int j = 0; j < quantity - 1 - i; ++j)
        {
            if (sources[j].author > sources[j + 1].author)
            {
                swap(sources[j], sources[j + 1]);
            }
        }
    }
}
//Сортировка массива по издательству
void sort_by_publisher(Item *sources, const int quantity)
{
    for (int i = 0; i < quantity; ++i)
    {
        for (int j = 0; j < quantity - 1 - i; ++j)
        {
            if (sources[j].publisher > sources[j + 1].publisher)
            {
                swap(sources[j], sources[j + 1]);
            }
        }
    }
}
//Сортировка массива по типу
void sort_by_source_type(Item *sources, const int quantity)
{
    for (int i = 0; i < quantity; ++i)
    {
        for (int j = 0; j < quantity - 1 - i; ++j)
        {
            if (sources[j].source_type > sources[j + 1].source_type)
            {
                swap(sources[j], sources[j + 1]);
            }
        }
    }
}
//Сортировка массива по году
void sort_by_year(Item *sources, const int quantity)
{
    for (int i = 0; i < quantity; ++i)
    {
        for (int j = 0; j < quantity - 1 - i; ++j)
        {
            if (sources[j].year > sources[j + 1].year)
            {
                swap(sources[j], sources[j + 1]);
            }
        }
    }
}
//Сортировка массива по жанру
void sort_by_genre(Item *sources, const int quantity)
{
    for (int i = 0; i < quantity; ++i)
    {
        for (int j = 0; j < quantity - 1 - i; ++j)
        {
            if (sources[j].genre > sources[j + 1].genre)
            {
                swap(sources[j], sources[j + 1]);
            }
        }
    }
}
//меню сортування книг
void sort_sources(Item *sources, const int quantity)
{
    enum Sorting
    {
        exit, source_type, name, author, year, genre, publisher
    };
    int choice;
    do
    {
        do
        {
            cout << "Sort sources by :" << endl
                << source_type << ". Type of source" << endl
                << name << ". Name" << endl
                << author << ". Author" << endl
                << year << ". Year" << endl
                << genre << ". Genre" << endl
                << publisher << ". Publisher" << endl
                << exit << ". Exit" << endl << endl
                << "Enter the parameter : ";
            cin >> choice;
        } while (choice < exit || choice > publisher);
        switch (choice)
        {
        case source_type: sort_by_source_type(sources, quantity);
            break;
        case name: sort_by_name(sources, quantity);
            break;
        case author: sort_by_author(sources, quantity);
            break;
        case year: sort_by_year(sources, quantity);
            break;
        case genre: sort_by_genre(sources, quantity);
            break;
        case publisher: sort_by_publisher(sources, quantity);
            break;
        case 0: cout << "Thanks!" << endl;
            break;
        default:
            break;
        }
        system("cls");
        cout << "Sorted ";
        print_sources(sources, quantity);
    } while (choice != 0);
}
#pragma endregion
#pragma region Find_source
//Поиск книг по автору
void search_by_author(Item *sources, const int quantity) // Можна шукати як по прізвищу так і по імені
{
    int counter = 0;
    cin.ignore();
    string search_word;
    cout << "Enter author's name : ";
    getline(cin, search_word);
    bool is_in = false;
    for (int i = 0; i < quantity; ++i)
    {
        int k = -1;
        k = sources[i].author.find(search_word);
        if (k >= 0)
        {
            is_in = true;
            cout << "--------------------------------------------------------------------------------" << endl;
            print_source(sources + i);
            ++counter;
        }
    }
    if (is_in == false)
    {
        cout << "No match found." << endl;
    }
    else
    {
        cout << endl << counter << "sources found" << endl << endl << endl;
    }
}
//Поиск книги по названию
void search_by_name(Item *sources, const int quantity) // Можна шукати по будь-якому слові в назві
{
    int counter = 0;
    cin.ignore();
    string search_word;
    cout << "Enter the name of book: ";
    getline(cin, search_word);
    bool is_in = false;
    for (int i = 0; i < quantity; ++i)
    {
        int k = -1;
        k = sources[i].name.find(search_word);
        if (k >= 0)
        {
            is_in = true;
            cout << "--------------------------------------------------------------------------------" << endl;
            print_source(sources + i);
            ++counter;
        }
    }
    if (is_in == false)
    {
        cout << "--------------------------------------------------------------------------------" << endl
            << "No match found." << endl << endl
            << "--------------------------------------------------------------------------------" << endl;
    }
    else
    {
        cout << endl << counter << "sources found" << endl << endl << endl;
    }
}
void search_by_publisher(Item *sources, const int quantity) // Можна шукати по будь-якому слові в назві
{
    int counter = 0;
    cin.ignore();
    string search_word;
    cout << "Enter the publisher of sources : ";
    getline(cin, search_word);
    bool is_in = false;
    for (int i = 0; i < quantity; ++i)
    {
        int k = -1;
        k = sources[i].publisher.find(search_word);
        if (k >= 0)
        {
            is_in = true;
            cout << "--------------------------------------------------------------------------------" << endl;
            print_source(sources + i);
            ++counter;
        }
    }
    if (is_in == false)
    {
        cout << "--------------------------------------------------------------------------------" << endl
            << "No match found." << endl << endl
            << "--------------------------------------------------------------------------------" << endl;
    }
    else
    {
        cout << endl << counter << "sources found" << endl << endl << endl;
    }
}
void search_book(Item *sources, const int quantity)
{
    int choice;
    do
    {
        do
        {
            cout << "Search book by :" << endl
                << "1. Name" << endl
                << "2. Author" << endl
                << "3. Publisher" << endl
                << "0. Exit" << endl << endl
                << "Enter the parameter : ";
            cin >> choice;
        } while (choice < 0 || choice > 3);
        switch (choice)
        {
        case 1: search_by_name(sources, quantity);
            break;
        case 2: search_by_author(sources, quantity);
            break;
        case 3: search_by_publisher(sources, quantity);
            break;
        case 0: cout << "Thanks!" << endl;
            break;
        default:
            break;
        }
    } while (choice != 0);
}
void search_magazine(Item *sources, const int quantity)
{
    string name;
    cout << "Enter the name of magazine or news paper : ";
    cin.ignore();
    getline(cin, name);
    int year;
    cout << "Enter the year of magazine or news paper : ";
    cin >> year;
    bool is_in = false;
    for (Item *ptr = sources; ptr < sources + quantity; ++ptr)
    {
        int k = -1;
        k = ptr->name.find(name);
        if (k >= 0)
        {
            if (ptr->year == year)
            {
                is_in = true;
                cout << "--------------------------------------------------------------------------------" << endl;
                print_source(ptr);
                break;
            }
        }
    }
    if (is_in == false)
    {
        cout << "--------------------------------------------------------------------------------" << endl
        << "No match found." << endl << endl
        << "--------------------------------------------------------------------------------" << endl;
    }
}
void search_source(Item *sources, const int quantity)
{
    enum Variants
    {
        exit, book, magazine
    };
    int choice = 0;
    do
    {
        do
        {
            cout << "Choose what do you want to find :" << endl
                << book << ". Book" << endl
                << magazine << ". Magazine or News paper" << endl
                << exit << ". Cancel" << endl
                << "Your choice : ";
            cin >> choice;
        } while (choice < exit || choice > magazine);
        switch (choice)
        {
        case book: search_book(sources, quantity);
            break;
        case magazine: search_magazine(sources, quantity);
            break;
        case exit: cout << "CANCELED" << endl;
            break;;
        default:
            break;
        }
    } while (choice != exit);
}
#pragma endregion
/*void create_array(ifstream *read_file, int lib_size, Item *sources)
{
    string item_param;
    int i = 0;
    while (!read_file.eof())
    {
    cout << i << endl;
    getline(read_file, item_param, ';');
    sources[i].source_type = item_param;
    getline(read_file, item_param, ';');
    sources[i].name = item_param;
    cout << sources[i].name << endl;
    getline(read_file, item_param, ';');
    sources[i].author = item_param;
    getline(read_file, item_param, ';');
    sources[i].year = atoi(item_param.c_str()); //i = atoi(string_name.c_str());
    getline(read_file, item_param, ';');
    sources[i].genre = item_param;
    getline(read_file, item_param, ';');
    sources[i].publisher = item_param;
    getline(read_file, item_param, ';');
    sources[i].is_given = item_param;
    i++;
    read_file.seekg(2, ios::cur);
    }
}*/
int get_sources_quantity(ifstream read_file)
{
    int quant = 0;
    string number;
    read_file >> number;
    quant = atoi(number.c_str());
    return quant;
}
int get_position(int lib_size)
{
    int counter = 0;
    if (lib_size <= 0)
    {
        counter = 0;
    }
    else if (lib_size < 10)
    {
        counter = 1;
    }
    else
    {
        do
        {
            lib_size /= 10;
            ++counter;
        } while (lib_size >= 1);
    }
    return counter;
}
void main()
{
    ifstream read_file;
    string read_file_name = "Library.txt";
    read_file.open(read_file_name, ios_base::in);
    if (!read_file.is_open())
    {
        cerr << "Cannot open " << read_file_name << " for reading. Exiting...." << endl;
        system("pause");
        exit(1);
    }
    int lib_size = 0;
    string number;
    read_file >> number;
    lib_size = atoi(number.c_str());
    cout << "Library consists of " << lib_size << " sources" << endl << endl;
    Item *sources = new Item[lib_size];
    string item_param;
    int i = 0;
    int position = get_position(lib_size);
    read_file.seekg(position + 2);
    for (; i < lib_size; ++i)
    {
        getline(read_file, item_param, ';');
        sources[i].serial_number = atoi(item_param.c_str());
        getline(read_file, item_param, ';');
        sources[i].source_type = item_param;
        getline(read_file, item_param, ';');
        sources[i].name = item_param;
        getline(read_file, item_param, ';');
        sources[i].author = item_param;
        getline(read_file, item_param, ';');
        sources[i].year = atoi(item_param.c_str()); //i = atoi(string_name.c_str());
        getline(read_file, item_param, ';');
        sources[i].genre = item_param;
        getline(read_file, item_param, ';');
        sources[i].publisher = item_param;
        getline(read_file, item_param, ';');
        sources[i].is_given = item_param;
        read_file.seekg(2, ios::cur);
    }
    int choice;
    enum menu
    {
        Exit,
        Add,
        Print,
        Edit,
        Sort,
        Search
    };
    do
    {
        do
        {
            cout << Add << ". Add source" << endl
                << Print << ". Print sources" << endl
                << Edit << ". Edit sources" << endl
                << Sort << ". Sort sources" << endl
                << Search << ". Search source" << endl
                << Exit << ". Exit" << endl << endl
                << "Enter the action : ";
            cin >> choice;
        } while (choice < 0 || choice > 5);
        switch (choice)
        {
        case menu::Add: add_source(sources, lib_size);
            break;
        case menu::Print:
            print_sources(sources, lib_size);
            break;
        case menu::Edit:
            edit_book(sources, lib_size);
            break;
        case menu::Sort:
            sort_sources(sources, lib_size);
            break;
        case menu::Search:
            search_source(sources, lib_size);
            break;
        case menu::Exit:
            cout << "Good bye!" << endl;
        default:
            break;
        }
    } while (choice != 0);
    delete[] sources;
    system("pause");
}