Удаление строки текста в текстовом файле по его контексту

У меня есть функция для программы инвентаризации зоомагазина. Пока что он будет перечислять инвентарь и добавлять предмет в инвентарь. Сейчас я пытаюсь удалить элемент по номеру productNumber(первое хранилище значений в текстовом файле csv). Я изменил свой код вокруг, мне просто нужна небольшая помощь с условием. Мне нужно отсканировать номер продукта и удалить строку по номеру продукта.

ВОПРОС: как получить условие для поиска productNumber в текстовом файле, чтобы я мог удалить эту строку в текстовом файле.

Мне нужна помощь, пожалуйста! У меня есть текстовый файл CSV, который настроен как следующая структура:

struct inventory_s
{
    int productNumber;
    float mfrPrice;
    float retailPrice;
    int numInStock;
    char liveInv;
    char productName[PRODUCTNAME_SZ +1];
};

/*Originalfile I'm trying to copy and delete from looks like*/

1000,1.49,3.79,10,0,Fish Food
2000,0.29,1.59,100,1,AngelFish
2001,0.09,0.79,200,1,Guppy
5000,2.40,5.95,10,0,Dog Collar Large
6000,49.99,129.99,3,1,Dalmation Puppy

/*function looks like*/

int deleteProduct(void)
{

    struct inventory_s newInventory;
    char line[50];
    //int del_line, temp = 1;

    FILE* originalFile = fopen("inventory.txt", "r"); //opens and reads file
    FILE* NewFile = fopen("inventoryCopy.txt", "w"); //opens and writes file
    if(originalFile == NULL || NewFile == NULL)
    {
       printf("Could not open data file\n");
       return -1;
    }
    printf("Please enter the product number to delete:");
    sscanf(line," %i", &newInventory.productNumber);

    while(fgets(line, sizeof(line), originalFile) !=NULL)
    {
        if (!(&newInventory.productNumber))
        {
            fputs(line, NewFile);
        }
    }



    fclose(originalFile);
    fclose(NewFile);

    return 0;
}



/*Input from user: 1000*/

/* What needs to happen in Newfile*/

2000,0.29,1.59,100,1,AngelFish
2001,0.09,0.79,200,1,Guppy
5000,2.40,5.95,10,0,Dog Collar Large
6000,49.99,129.99,3,1,Dalmation Puppy

1 ответ

Исправить как это

printf("Please enter the product number to delete:");
int productNumber;
scanf("%i", &productNumber);

while(fgets(line, sizeof(line), originalFile) != NULL)
{
    sscanf(line, "%i", &newInventory.productNumber);

    if (productNumber != newInventory.productNumber)
    {
        fputs(line, NewFile);
    }
}
Другие вопросы по тегам