0

Функция работает нормально, единственное я никак не могу разобраться с тем, что при удалении файла, в файл записывается отрицательное значение -858993460; Не знаю что с этим делать, уже второй день не могу решить проблему. После того, как появляется это число, не является доступным удаление новых созданных после этого числа обьектов, структур. (Нарушения доступа для записи) в istream.

void Funcodstranit()//Объявление функции поиска и удаления элементов из файла
{
    zamky pass[255];
    int i = 0; 
    int n1 = 0;
    fstream databaza;
    databaza.open("databaza.txt", ios::in);
    do 
    {
        databaza >> pass[i].id;
        databaza >> pass[i].nazev;
        databaza >> pass[i].Mesto_a_Stat;
        databaza >> pass[i].popis;
        databaza >> pass[i].oteviraci_hodiny;
        databaza >> pass[i].vstupne;
        i++;
        n1++;
    }
    while (!databaza.eof());
    int mk; bool check = 0; int odst;
    cout << "Zadejte ID zamku, pro odstraneni: "; 
    cin >> mk;
    for (i = 0; i < n1; i++)
    {
        if (mk == pass[i].id)
        {
            odst = i;
            cout << "\n===================================JEMENO NALEZENO=================================\n";
            cout << "ID =" << pass[i].id << "\nNazev zamku=" << pass[i].nazev << "\nMesto a Stat=" << pass[i].Mesto_a_Stat << "\nPopis=" << pass[i].popis << "\nHodiny praci=" << pass[i].oteviraci_hodiny << "\nVstupne=" << pass[i].vstupne;
            cout << "\n===================================================================================\n";
            check = 1;
        };
};
if (check != 1)
{
    cout &lt;&lt; &quot;=============================\n&quot;;
    cout &lt;&lt; &quot;Neni objektu kteri muze najit\n&quot;;
    cout &lt;&lt; &quot;=============================\n&quot;;
}
else
{
    string sel;
    cout &lt;&lt; &quot;Odstranit Objekt nebo Objekty? \n&quot; &lt;&lt; &quot;1. Yes\n&quot; &lt;&lt; &quot;2. No\n&quot;;
    cout &lt;&lt; &quot;Answer: &quot;;
    cin.ignore();
    getline(cin, sel);
    if (sel == &quot;Yes&quot; | sel == &quot;yes&quot;)
    {
        fstream databaza(&quot;databaza.txt&quot;, ios::out | ios::binary);
        for (i = 0; i &lt; n1; i++)
        {
            if (pass[i].id != mk)
            {
                databaza &lt;&lt; pass[i].id &lt;&lt; &quot; &quot;;
                databaza &lt;&lt; pass[i].nazev &lt;&lt; &quot; &quot;;
                databaza &lt;&lt; pass[i].Mesto_a_Stat &lt;&lt; &quot; &quot;;
                databaza &lt;&lt; pass[i].popis &lt;&lt; &quot; &quot;;
                databaza &lt;&lt; pass[i].oteviraci_hodiny &lt;&lt; &quot; &quot;;
                databaza &lt;&lt; pass[i].vstupne &lt;&lt; &quot; &quot;;
                databaza &lt;&lt; &quot; \n&quot;;
            }
        }
        cout &lt;&lt; &quot;Objekt odstranen...\n&quot;;
        Sleep(1000);
    }
}
databaza.close();

}

  • У меня каждый обьект используется как отдельная строка, такие как айди, название, город и так далее(всё записывается в одну строку, как одна структура). Прошу прощения, программу пишу на чешском для университета. Дело в том, что при удалении такого обьекта, допустим полностью, всё заканчивается успешно, но в конце файла, я не могу понять почему добвляется запись, в которой изображено отрицательное число, всегда одно и тоже, не знаю что с этим делать. – Давид Шамсани Nov 03 '20 at 05:12
  • Я пробовал всё и с eof и без него. Тут дело не в нём. – Давид Шамсани Nov 03 '20 at 05:37

0 Answers0