Почему - то не работает функция удаления. Вот код, что я пытался. Укажите на ошибку.
Добавляем запись в файл:
void dobavlenie()
{
const char * kat_avto_l = "Легковая";
const char * kat_avto_g = "Грузовая";
const char * kat_garaga_m = "Металлический";
const char * kat_garaga_k = "Кирпичный";
vvod grg[100];
int b, z, z_v, m, m_1, m_2, n, i = 0, dl;
system("cls");
kar = fopen("kar.bin", "ab");
cout << "Сколько записей хотите добавить?\nВаш выбор:";
cin >> n;
while (i < n)
{
system("cls");
getchar();
m_2:
system("cls");
cout << "Меню добавления:\n\nФИО арендатора\nВвод:";
//cin.getline(grg[i].fio, 24);
gets_s(grg[i].fio);
/* if (strlen(grg[i].fio) == 0)
{
cout << "Ошибка №.Вы ввели пустой рядок."; goto m_2;
}
else
for (int i = 0; grg[i].fio != '\0'; i++)
if ((strpbrk(grg[i].fio, "\\/,()1234567890!@#$%^&*-+=_|")))
{
cout << endl << "Ошибка №.Недопустимый символ.";
getchar();
goto m_2;
}*/
system("cls");
cout << "Меню добавления:\n\nСрок аренды гаража (месяц):\nВаш выбор:";
cin >> grg[i].srok;
system("cls");
m:
system("cls");
cout << "Меню добавления:\n\nТип авто:\n1.Легковая.\n2.Грузовая.\nВаш выбор:";
cin >> b;
switch (b)
{
case 1:
strcpy(grg[i].tip_avto, kat_avto_l);
break;
case 2:
strcpy(grg[i].tip_avto, kat_avto_g);
break;
default: goto m;
}
system("cls");
m_1:
system("cls");
cout << "Меню добавления:\n\nТип гаража:\n1.Металлический.\n2.Кирпичный.\nВаш выбор:";
cin >> z;
switch (z)
{
case 1:
strcpy(grg[i].tip_garaga, kat_garaga_m);
z_v = grg[i].srok * 2500;
grg[i].zagal_stom = z_v;
break;
case 2:
strcpy(grg[i].tip_garaga, kat_garaga_k);
z_v = grg[i].srok * 5000;
grg[i].zagal_stom = z_v;
break;
default: goto m_1;
}
system("cls");
cout << "Меню добавления:\n\nМесто гаража (1-99):\nВаш выбор:";
cin >> grg[i].mesto;
system("cls");
getchar();
cout << "Меню добавления:\n\nИндивидуальный регистрационный знак.\nВаш выбор:";
gets_s(grg[i].znak);
system("cls");
fwrite(&grg[i], sizeof(grg[i]), 1, kar);
i++;
}
tmp += n;
fclose(kar);
cout << "Анкета заполнена:)\n";
Sleep(1000);
system("cls");
glavnoemenu();
} Функция просмотра:
void shapka()
{
S printf("ЙНННЛННННННННННННННННННННННННЛННННННННННЛНННННННННННННННЛНННННЛННННННННННННННННННЛНННННННННННННННННННННННННЛННННННННННННННННННННННННННННННННННН»");
//printf("\n| № | ФИО арендатора | Тип авто | Тип гаража |Место|Индивид. рег. знак|Срок аренды гаража (мес.)|Общ. стоимость. аренды гаража (грн)|");
R printf("\n");
P printf(" № ");
P printf(" ФИО арендатора ");
P printf(" Тип авто ");
P printf(" Тип гаража ");
P printf("Место");
P printf("Индивид. рег. знак");
P printf("Срок аренды гаража (мес.)");
P printf("Общ. стоимость. аренды гаража (грн)"); P
S printf("\nМНННОННННННННННННННННННННННННОННННННННННОНННННННННННННННОНННННОННННННННННННННННННОНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННННН№");
}
void prosmotr_delet()
{
vvod grg;
int i = 0, dlina = 0, n,m;
int size = sizeof(struct vvod);
kar = fopen("kar.bin", "rb");
cout << "Меню просмотра:\n\n";
rewind(kar);
shapka();
while (fread(&grg, size, 1, kar) == 1)
{
R printf("\n");
P printf("%3i", i + 1);
P printf("%-23s ", grg.fio);
P printf("%-9s ", grg.tip_avto);
P printf("%-14s ", grg.tip_garaga);
P printf("%4i ", grg.mesto);
P printf("%-18s", grg.znak);
P printf("%25i", grg.srok);
P printf("%35i", grg.zagal_stom); P
S printf("\nМНННОННННННННННННННННННННННННОННННННННННОНННННННННННННННОНННННОННННННННННННННННННОНННННННННННННННННННННННННОННННННННННННННННННННННННННННННННННН№"); R
i++;
}
S printf("\nИНННКННННННННННННННННННННННННКННННННННННКНННННННННННННННКНННННКННННННННННННННННННКНННННННННННННННННННННННННКННННННННННННННННННННННННННННННННННН\xBC\n"); R
fclose(kar);
}
Функция удаления :
void delet_po_nomery()
{
int num = 0,fst=0;
char answ;
cout << "Меню удаления:\n\n";
prosmost_delete();
cout << "\nВведите номер записи,которую хотите удалить.\nВаш выбор:";
cin >> num;
num--;
kar = fopen("kar.bin", "rb");
while (fread(&grg, sizeof(grg), 1, kar) == 1)
fst++;
if (num < fst && num >= 0)
{
cout << "Вы уверены, что хотите удалить" << num + 1 << "-ю запись из файла?(y/n):";
fflush(stdin);
cin >> answ;
if (answ == 'y' || answ == 'Y' || answ == 'д' || answ == 'Д')
{
rewind(kar);
temp = fopen("temp.bin", "wb");
int i = 0;
while (fread(&grg, sizeof(grg), 1, kar) == 1)
{
if (i != num)
{
fwrite(&grg, sizeof(grg), 1, temp);
i++;
}
}
fclose(temp);
fclose(kar);
temp = fopen("temp.bin", "rb");
kar = fopen("kar.bin", "wb");
while (fread(&grg, sizeof(grg), 1, kar) == 1) fwrite(&grg, sizeof(grg), 1, temp);
cout << "Запись под номером " << num + 1 << "успешно удалена!";
fclose(temp);
remove("temp.bin");//Удаления файла temp
}
else
cout << "К сожалению не удалось удалить запись";
}
else
cout << "Ошибка №.Некоректный номер записи";
fclose(kar);
getchar();
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Доброго времени сутокИзучаю алгоритмы и в качестве задания реализовал быструю сортировку(см
Здравствуйте, возник вопрос как заполнить список из файлаИмеется структура, список двусвязный
Как вернуть меню что снизу экрана (Компилятор Ресурсы Журнал Компиляции) в Dev C++