Функция add - С++ [требует правки]

619
18 апреля 2017, 09:48

Не могу ввести в файл ФИО и название товара. Помогите найти ошибку

void add() {
    int f_c = 0;
    int max_c = 1000;
    int size = sizeof(KOSMETIKA);
    const char * filename = "KOSMETIKA";
    FILE * file;
    KOSMETIKA temp;
    Russian();
    file = fopen(filename, "a + b");
    if (file == NULL) {
        cout << "Ошибка. Нет доступа к файлу!" << endl << endl;
        Sleep(800);
        exit(1);
    }
    rewind(file);
    int m(0);
    while (fread(&temp, size, 1, file) == 1) {
        if (temp.n_user > m) m = temp.n_user;
    }
    fseek(file, 0, SEEK_END);
    f_c = ftell(file) / size;
    system("CLS");
    int c(0);
    char check[256];
    do {
        cin.clear();
        cin.sync();
        system("cls");
        SetColor(15, Black);
        c = 0;
        cout << " Какое количество вы хотите добавить?" << endl;
        cout << " Ваш ответ: ";
        gets_s(check); check[30] = '\0';
        for (int i = 0; i < strlen(check); i++) {
            if (!(check[i] >= '1' && check[i] <= '9')) {
                check[1] = '\0';
                check[0] = '0';
            }
        }
        for (int i = 0; i < strlen(check); i++) {
            if (check[i] == '-') {
                check[1] = '\0';
                check[0] = '0';
                c = 0;
            }
        }
        c = atoi(check);
        if (c <= 0) {
            cout << " Некорректный ввод! Повторите!";
            Sleep(800);
            c = 0;
        }
    } while (c == 0);
    if (c < 0 && c + f_c >= max_c) {
        system("CLS");
        cout << "Файл заполнен!" << endl << "Удалите записи для добавления!" << endl << endl;
        fclose(file);
        menu();
    }
    for (int i = 0; i < c; i++) {
        system("CLS");
        cin.clear();
        cin.sync();
        cout << "Запись номер " << f_c + i + 1 << endl;
        Sleep(500);
        system("CLS");
        int space(0);
        char fio[256];
        do {
            space = 0;
            cout << " Введите ФИО: ";
            gets_s(fio); fio[30] = '\0';
            for (int i = 0; i < strlen(fio); i++) {
                if (fio[i] == ' ') {
                    space++;
                }
            }
            if (space < 2 || space > 2) {
                cout << " Некорректный ввод!";
                Sleep(1000);
                space = 0;
            }
            else if (space == strlen(fio)) {
                cout << " Вы ничего не ввели!";
                Sleep(1000);
                space = 0;
            }
            for (int i = 0; i < strlen(fio); i++) {
                if (fio[i] >= '0' && fio[i] <= '9') {
                    cout << " В ФИО не могут присутствовать цифры!";
                    Sleep(1000);
                    space = 0;
                    break;
                }
            }
        } while (space == 0);
        cin.clear();
        cin.sync();
        char modfio[256]; modfio[0] = '\0';
        int b(0);
        int mas[2];
        for (int i = 0; i < strlen(fio); i++) {
            if (fio[i] == ' ') {
                mas[b] = i + 1;
                b++;
            }
        }
        for (int i = 0; i < strlen(fio); i++)
        {
            if (fio[i] >= 'A' && fio[i] <= 'Z')
            {
                fio[i] += 32;
            }
            else if (fio[i] >= 'А' && fio[i] <= 'Я') {
                fio[i] += 32;
            }
            else if (fio[i] == 'Ё') {
                fio[i] = 'ё';
            }
        }
        if (fio[0] >= 'a' && fio[0] <= 'z')
        {
            fio[0] -= 32;
        }
        else if (fio[0] >= 'а' && fio[0] <= 'я') {
            fio[0] -= 32;
        }
        else if (fio[0] == 'ё') {
            fio[0] = 'Ё';
        }
        for (int i = 0; i < strlen(fio); i++) {
            for (int j = 0; j < b; j++) {
                if (mas[j] == i) {
                    if (fio[i] >= 'a' && fio[i] <= 'z')
                    {
                        fio[i] -= 32;
                    }
                    else if (fio[i] >= 'а' && fio[i] <= 'я') {
                        fio[i] -= 32;
                    }
                    else if (fio[i] == 'ё') {
                        fio[i] = 'Ё';
                    }
                }
            }
        }
        strncat(modfio, fio, mas[0] - 1);
        modfio[strlen(modfio) + 1] = '\0';
        modfio[strlen(modfio)] = ' ';
        strncat(modfio, &fio[mas[0]], 1);
        modfio[strlen(modfio) + 1] = '\0';
        modfio[strlen(modfio)] = '.';
        modfio[strlen(modfio) + 1] = '\0';
        strncat(modfio, &fio[mas[1]], 1);
        modfio[strlen(modfio) + 1] = '\0';
        modfio[strlen(modfio)] = '.';
        strcpy(temp.name, modfio);
        int r(0), flag(0);
        rewind(file);
        while (fread(&temp, size, 1, file) == 1) {
            if (strcmp(temp.name, modfio) == 0) {
                r = temp.n_user;
                flag = 1;
                break;
            }
            else r = m + 1;
        }
        fseek(file, 0, SEEK_END);
        temp.n_user = r;
        if (flag == 0) m++;
        char a[255];
        b = 0;
        cout << endl << " Выберите категорию косметического изделия ";
        cout << endl << " 1.Декоративная";
        cout << endl << " 2.Уход за волосами";
        cout << endl << " 3.Уход за лицом";
        cout << endl << " Ваш выбор: ";
        do {
            cin >> a;
            b = atoi(a);
        } while (!(b > 0 && b < 4));
        switch (b) {
        case 1: {
            const char * kat = "Декор.";
            strcpy(temp.kategorija, kat);
            temp.nkategorija = 1;
            break;
        }
        case 2: {
            const char * kat = "У/В";
            strcpy(temp.kategorija, kat);
            temp.nkategorija = 2;
            break;
        }
        case 3: {
            const char * kat = "У/Л";
            strcpy(temp.kategorija, kat);
            temp.nkategorija = 3;
            break;
        }
        }
        if (b == 1) {
            char a1[255];
            int b1;
            cout << endl << " Выберите тип косметического изделия";
            cout << endl << " 1.Туш";
            cout << endl << " 2.Помада";
            cout << endl << " 3.Пудра";
            cout << endl << " Ваш выбор: ";
            do {
                cin >> a1;
                b1 = atoi(a1);
                switch (b1) {
                case 1: {
                    const char * tip = "Туш";
                    strcpy(temp.tip, tip);
                    temp.ntip = 1;
                    break;
                }
                case 2: {
                    const char * tip = "Помада";
                    strcpy(temp.tip, tip);
                    temp.ntip = 2;
                    break;
                }
                case 3: {
                    const char * tip = "Пудра";
                    strcpy(temp.tip, tip);
                    temp.ntip = 3;
                    break;
                }
                }
            } while (!(b1 > 0 && b1 < 4));
        }
        if (b == 2) {
            char a1[255];
            int b1;
            cout << endl << " Выберите тип изделия ухода за волосами";
            cout << endl << " 1.Шампунь";
            cout << endl << " 2.Маска";
            cout << endl << " 3.Кондиционер";
            cout << endl << " Ваш выбор: ";
            do {
                cin >> a1;
                b1 = atoi(a1);
                switch (b1) {
                case 1: {
                    const char * tip = "Шампунь";
                    strcpy(temp.tip, tip);
                    temp.ntip = 4;
                    break;
                }
                case 2: {
                    const char * tip = "Маска";
                    strcpy(temp.tip, tip);
                    temp.ntip = 5;
                    break;
                }
                case 3: {
                    const char * tip = "Кондиц.";
                    strcpy(temp.tip, tip);
                    temp.ntip = 6;
                    break;
                }
                }
            } while (!(b1 > 0 && b1 < 4));
        }
        if (b == 3) {
            char a1[255];
            int b1;
            cout << endl << " Выберите тип изделия ухода за лицом";
            cout << endl << " 1.Крем";
            cout << endl << " 2.Маска";
            cout << endl << " 3.Скраб";
            cout << endl << " Ваш выбор: ";
            do {
                cin >> a1;
                b1 = atoi(a1);
                switch (b1) {
                case 1: {
                    const char * tip = "Крем";
                    strcpy(temp.tip, tip);
                    temp.ntip = 7;
                    break;
                }
                case 2: {
                    const char * tip = "Маска";
                    strcpy(temp.tip, tip);
                    temp.ntip = 8;
                    break;
                }
                case 3: {
                    const char * tip = "Скраб";
                    strcpy(temp.tip, tip);
                    temp.ntip = 9;
                    break;
                }
                }
            } while (!(b1 > 0 && b1 < 4));
        }
        cin.clear();
        cin.sync();
        cout << endl << " Введите название товара: ";
        gets_s(temp.nazva);
        temp.nazva[20] = '\0';
        cout << endl << " Введите кол-во товара: ";
        cin >> temp.kol_vo;
        cout << endl << " Введите цену за единицу товара: ";
        cin >> temp.one_price;
        temp.final_price = temp.one_price * temp.kol_vo;
        fwrite(&temp, size, 1, file);
    }
    fclose(file);
}
READ ALSO
RCSwitch (Arduino) Принцип работы библиотеки

RCSwitch (Arduino) Принцип работы библиотеки

Уважаемые стэковерфолверцы!

397
создать проект на angular2

создать проект на angular2

Подскажите пожалуйста как создать проект на angular2Раньше я делал так:

202
Маленькая задачка по jquery

Маленькая задачка по jquery

Сей код должен был существенно облегчить сайт http запросами, так как по желанию клиента в каждом товаре должно крутится до 10 фотокРешил сделать...

208
Как открыть окно chrome JavaScript (с закладками и контролами)

Как открыть окно chrome JavaScript (с закладками и контролами)

Этот код откроет страничку в новом окне :

202