Удалить определённую запись по номеру, который введёт пользователь - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Очень надеюсь на вашу помощь. Моя задача удалить определённую запись по номеру, который введёт юзер. Пользуюсь Visual Studio 2013
void udalenie()
{
    int i, s;
    vivod();
    printf("\nNomer mashini,kotoruiu udaleaem: ");
    scanf_s("%d", &i);
    fopen_s(&f, "car.dat", "r");
    fopen_s(&nov, "nov.dat", "wb+");
    s = 0;
    while (fread(&car1, sizeof(car1), 1, f) != NULL)
    {
        fread(&car1, sizeof(car1), 1, f);
        s++;
        if (s != i)
        {
            fwrite(&car1, sizeof(car1), 1, nov);
        }
    }
    fclose(f);
    fclose(nov);
}
Принцип заключается в том, что программа создаёт новый файл и просто записывает в него записи без записи под номером,который указал пользователь. Программа всё правильно делает,но она пропускает нулевой элемент,т.е. 1ый и дальше всё правильно. ПРОШУ ПОМОЩИ.

Решение задачи: «Удалить определённую запись по номеру, который введёт пользователь»

textual
Листинг программы
while (fread(&car1, sizeof(car1), 1, f) != NULL)
{
    fread(&car1, sizeof(car1), 1, f);

Объяснение кода листинга программы

  1. Прочитай файл, пока не достиг конца.
  2. Для каждой прочитанной записи автомобиля, прочитать её данные.

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы