У меня есть функция для инвентаря для животных. Пока он перечислит инвентарь и добавит элемент в инвентарь. Теперь я пытаюсь удалить элемент по его номеру продукта (первое хранилище значений в текстовом файле 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
Спасибо так много! – RTriplett
@RTriplett: Обратите внимание, что вы обязательно должны добавить проверку ошибок в код (как и для оригинала). – Olaf