#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PRODUCTS 100
#define FILENAME "products.txt"
// Struct for storing product information
typedef struct {
int id;
char name[50];
float price;
int stock;
} Product;
// Function declarations
void addProduct(Product products[], int *productCount);
void displayProducts(Product products[], int productCount);
void editProduct(Product products[], int productCount);
void deleteProduct(Product products[], int *productCount);
void sellProduct(Product products[], int *productCount);
void saveToFile(Product products[], int productCount);
void loadFromFile(Product products[], int *productCount);
int main() {
Product products[MAX_PRODUCTS];
int productCount = 0;
int choice;
// Load data from file
loadFromFile(products, &productCount);
while (1) {
printf("\n===== Shop Management System =====\n"); printf("1. Add New Product\n"); printf("2. Display Products\n"); printf("3. Edit Product Information\n"); printf("4. Delete Product\n"); printf("6. Save Data to File\n"); scanf("%d", &choice);
switch (choice) {
case 1:
addProduct(products, &productCount);
break;
case 2:
displayProducts(products, productCount);
break;
case 3:
editProduct(products, productCount);
break;
case 4:
deleteProduct(products, &productCount);
break;
case 5:
sellProduct(products, &productCount);
break;
case 6:
saveToFile(products, productCount);
break;
case 7:
printf("Saving data and exiting the program\n"); saveToFile(products, productCount);
return 0;
default:
}
}
}
void addProduct(Product products[], int *productCount) {
if (*productCount >= MAX_PRODUCTS) {
printf("Cannot add more products\n"); return;
}
Product newProduct;
newProduct.id = *productCount + 1;
scanf(" %[^
]", newProduct.name);
scanf("%f", &newProduct.price);
scanf("%d", &newProduct.stock);
products[*productCount] = newProduct;
(*productCount)++;
printf("Product added successfully!\n"); }
void displayProducts(Product products[], int productCount) {
if (productCount == 0) {
printf("No products available\n"); return;
}
printf("====================\n"); for (int i = 0; i < productCount; i++) {
printf("ID: %d | Name: %s | Price: %.2f | Stock: %d\n", products[i].id, products[i].name, products[i].price, products[i].stock);
}
}
void editProduct(Product products[], int productCount) {
int id;
printf("Enter the product ID to edit: "); scanf("%d", &id);
for (int i = 0; i < productCount; i++) {
if (products[i].id == id) {
scanf(" %[^
]", products[i].name);
scanf("%f", &products[i].price);
printf("New Stock Quantity: "); scanf("%d", &products[i].stock);
printf("Product information updated successfully!\n"); return;
}
}
printf("Product with ID %d not found\n", id
); }
void deleteProduct(Product products[], int *productCount) {
int id;
printf("Enter the product ID to delete: "); scanf("%d", &id);
for (int i = 0; i < *productCount; i++) {
if (products[i].id == id) {
for (int j = i; j < *productCount - 1; j++) {
products[j] = products[j + 1];
}
(*productCount)--;
printf("Product deleted successfully!\n"); return;
}
}
printf("Product with ID %d not found\n", id
); }
void sellProduct(Product products[], int *productCount) {
int id, quantity;
printf("Enter the product ID to sell: "); scanf("%d", &id);
for (int i = 0; i < *productCount; i++) {
if (products[i].id == id) {
scanf("%d", &quantity);
if (quantity > products[i].stock) {
printf("Not enough stock!\n"); } else {
products[i].stock -= quantity;
printf("Product sold successfully. Total: %.2f\n", products
[i
].price
* quantity
); }
return;
}
}
printf("Product with ID %d not found\n", id
); }
void saveToFile(Product products[], int productCount) {
printf("Unable to save data to file\n"); return;
}
for (int i = 0; i < productCount; i++) {
fprintf(file, "%d,%s,%.2f,%d\n", products
[i
].id
, products
[i
].name
, products
[i
].price
, products
[i
].stock
); }
printf("Data saved successfully!\n"); }
void loadFromFile(Product products[], int *productCount) {
printf("No data file found. Starting with an empty system\n"); return;
}
*productCount = 0;
while (fscanf(file, "%d,%49[^,],%f,%d\n", &products
[*productCount
].id
, products
[*productCount
].name
, &products
[*productCount
].price
, &products
[*productCount
].stock
) != EOF
) { (*productCount)++;
}
printf("Data loaded successfully!\n"); }
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBNQVhfUFJPRFVDVFMgMTAwCiNkZWZpbmUgRklMRU5BTUUgInByb2R1Y3RzLnR4dCIKCi8vIFN0cnVjdCBmb3Igc3RvcmluZyBwcm9kdWN0IGluZm9ybWF0aW9uCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBpZDsKICAgIGNoYXIgbmFtZVs1MF07CiAgICBmbG9hdCBwcmljZTsKICAgIGludCBzdG9jazsKfSBQcm9kdWN0OwoKLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zCnZvaWQgYWRkUHJvZHVjdChQcm9kdWN0IHByb2R1Y3RzW10sIGludCAqcHJvZHVjdENvdW50KTsKdm9pZCBkaXNwbGF5UHJvZHVjdHMoUHJvZHVjdCBwcm9kdWN0c1tdLCBpbnQgcHJvZHVjdENvdW50KTsKdm9pZCBlZGl0UHJvZHVjdChQcm9kdWN0IHByb2R1Y3RzW10sIGludCBwcm9kdWN0Q291bnQpOwp2b2lkIGRlbGV0ZVByb2R1Y3QoUHJvZHVjdCBwcm9kdWN0c1tdLCBpbnQgKnByb2R1Y3RDb3VudCk7CnZvaWQgc2VsbFByb2R1Y3QoUHJvZHVjdCBwcm9kdWN0c1tdLCBpbnQgKnByb2R1Y3RDb3VudCk7CnZvaWQgc2F2ZVRvRmlsZShQcm9kdWN0IHByb2R1Y3RzW10sIGludCBwcm9kdWN0Q291bnQpOwp2b2lkIGxvYWRGcm9tRmlsZShQcm9kdWN0IHByb2R1Y3RzW10sIGludCAqcHJvZHVjdENvdW50KTsKCmludCBtYWluKCkgewogICAgUHJvZHVjdCBwcm9kdWN0c1tNQVhfUFJPRFVDVFNdOwogICAgaW50IHByb2R1Y3RDb3VudCA9IDA7CiAgICBpbnQgY2hvaWNlOwoKICAgIC8vIExvYWQgZGF0YSBmcm9tIGZpbGUKICAgIGxvYWRGcm9tRmlsZShwcm9kdWN0cywgJnByb2R1Y3RDb3VudCk7CgogICAgd2hpbGUgKDEpIHsKICAgICAgICBwcmludGYoIlxuPT09PT0gU2hvcCBNYW5hZ2VtZW50IFN5c3RlbSA9PT09PVxuIik7CiAgICAgICAgcHJpbnRmKCIxLiBBZGQgTmV3IFByb2R1Y3RcbiIpOwogICAgICAgIHByaW50ZigiMi4gRGlzcGxheSBQcm9kdWN0c1xuIik7CiAgICAgICAgcHJpbnRmKCIzLiBFZGl0IFByb2R1Y3QgSW5mb3JtYXRpb25cbiIpOwogICAgICAgIHByaW50ZigiNC4gRGVsZXRlIFByb2R1Y3RcbiIpOwogICAgICAgIHByaW50ZigiNS4gU2VsbCBQcm9kdWN0XG4iKTsKICAgICAgICBwcmludGYoIjYuIFNhdmUgRGF0YSB0byBGaWxlXG4iKTsKICAgICAgICBwcmludGYoIjcuIEV4aXQgUHJvZ3JhbVxuIik7CiAgICAgICAgcHJpbnRmKCJTZWxlY3QgYW4gb3B0aW9uOiAiKTsKICAgICAgICBzY2FuZigiJWQiLCAmY2hvaWNlKTsKCiAgICAgICAgc3dpdGNoIChjaG9pY2UpIHsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgYWRkUHJvZHVjdChwcm9kdWN0cywgJnByb2R1Y3RDb3VudCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgZGlzcGxheVByb2R1Y3RzKHByb2R1Y3RzLCBwcm9kdWN0Q291bnQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIGVkaXRQcm9kdWN0KHByb2R1Y3RzLCBwcm9kdWN0Q291bnQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIGRlbGV0ZVByb2R1Y3QocHJvZHVjdHMsICZwcm9kdWN0Q291bnQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIHNlbGxQcm9kdWN0KHByb2R1Y3RzLCAmcHJvZHVjdENvdW50KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICBzYXZlVG9GaWxlKHByb2R1Y3RzLCBwcm9kdWN0Q291bnQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgIHByaW50ZigiU2F2aW5nIGRhdGEgYW5kIGV4aXRpbmcgdGhlIHByb2dyYW1cbiIpOwogICAgICAgICAgICAgICAgc2F2ZVRvRmlsZShwcm9kdWN0cywgcHJvZHVjdENvdW50KTsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcHJpbnRmKCJJbnZhbGlkIG9wdGlvbiFcbiIpOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBhZGRQcm9kdWN0KFByb2R1Y3QgcHJvZHVjdHNbXSwgaW50ICpwcm9kdWN0Q291bnQpIHsKICAgIGlmICgqcHJvZHVjdENvdW50ID49IE1BWF9QUk9EVUNUUykgewogICAgICAgIHByaW50ZigiQ2Fubm90IGFkZCBtb3JlIHByb2R1Y3RzXG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgUHJvZHVjdCBuZXdQcm9kdWN0OwogICAgbmV3UHJvZHVjdC5pZCA9ICpwcm9kdWN0Q291bnQgKyAxOwoKICAgIHByaW50ZigiUHJvZHVjdCBOYW1lOiAiKTsKICAgIHNjYW5mKCIgJVteCl0iLCBuZXdQcm9kdWN0Lm5hbWUpOwoKICAgIHByaW50ZigiUHJpY2U6ICIpOwogICAgc2NhbmYoIiVmIiwgJm5ld1Byb2R1Y3QucHJpY2UpOwoKICAgIHByaW50ZigiU3RvY2sgUXVhbnRpdHk6ICIpOwogICAgc2NhbmYoIiVkIiwgJm5ld1Byb2R1Y3Quc3RvY2spOwoKICAgIHByb2R1Y3RzWypwcm9kdWN0Q291bnRdID0gbmV3UHJvZHVjdDsKICAgICgqcHJvZHVjdENvdW50KSsrOwoKICAgIHByaW50ZigiUHJvZHVjdCBhZGRlZCBzdWNjZXNzZnVsbHkhXG4iKTsKfQoKdm9pZCBkaXNwbGF5UHJvZHVjdHMoUHJvZHVjdCBwcm9kdWN0c1tdLCBpbnQgcHJvZHVjdENvdW50KSB7CiAgICBpZiAocHJvZHVjdENvdW50ID09IDApIHsKICAgICAgICBwcmludGYoIk5vIHByb2R1Y3RzIGF2YWlsYWJsZVxuIik7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHByaW50ZigiXG5Qcm9kdWN0IExpc3RcbiIpOwogICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PVxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb2R1Y3RDb3VudDsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCJJRDogJWQgfCBOYW1lOiAlcyB8IFByaWNlOiAlLjJmIHwgU3RvY2s6ICVkXG4iLCAKICAgICAgICAgICAgICAgcHJvZHVjdHNbaV0uaWQsIHByb2R1Y3RzW2ldLm5hbWUsIHByb2R1Y3RzW2ldLnByaWNlLCBwcm9kdWN0c1tpXS5zdG9jayk7CiAgICB9Cn0KCnZvaWQgZWRpdFByb2R1Y3QoUHJvZHVjdCBwcm9kdWN0c1tdLCBpbnQgcHJvZHVjdENvdW50KSB7CiAgICBpbnQgaWQ7CiAgICBwcmludGYoIkVudGVyIHRoZSBwcm9kdWN0IElEIHRvIGVkaXQ6ICIpOwogICAgc2NhbmYoIiVkIiwgJmlkKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb2R1Y3RDb3VudDsgaSsrKSB7CiAgICAgICAgaWYgKHByb2R1Y3RzW2ldLmlkID09IGlkKSB7CiAgICAgICAgICAgIHByaW50ZigiTmV3IFByb2R1Y3QgTmFtZTogIik7CiAgICAgICAgICAgIHNjYW5mKCIgJVteCl0iLCBwcm9kdWN0c1tpXS5uYW1lKTsKCiAgICAgICAgICAgIHByaW50ZigiTmV3IFByaWNlOiAiKTsKICAgICAgICAgICAgc2NhbmYoIiVmIiwgJnByb2R1Y3RzW2ldLnByaWNlKTsKCiAgICAgICAgICAgIHByaW50ZigiTmV3IFN0b2NrIFF1YW50aXR5OiAiKTsKICAgICAgICAgICAgc2NhbmYoIiVkIiwgJnByb2R1Y3RzW2ldLnN0b2NrKTsKCiAgICAgICAgICAgIHByaW50ZigiUHJvZHVjdCBpbmZvcm1hdGlvbiB1cGRhdGVkIHN1Y2Nlc3NmdWxseSFcbiIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCJQcm9kdWN0IHdpdGggSUQgJWQgbm90IGZvdW5kXG4iLCBpZCk7Cn0KCnZvaWQgZGVsZXRlUHJvZHVjdChQcm9kdWN0IHByb2R1Y3RzW10sIGludCAqcHJvZHVjdENvdW50KSB7CiAgICBpbnQgaWQ7CiAgICBwcmludGYoIkVudGVyIHRoZSBwcm9kdWN0IElEIHRvIGRlbGV0ZTogIik7CiAgICBzY2FuZigiJWQiLCAmaWQpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKnByb2R1Y3RDb3VudDsgaSsrKSB7CiAgICAgICAgaWYgKHByb2R1Y3RzW2ldLmlkID09IGlkKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgKnByb2R1Y3RDb3VudCAtIDE7IGorKykgewogICAgICAgICAgICAgICAgcHJvZHVjdHNbal0gPSBwcm9kdWN0c1tqICsgMV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgKCpwcm9kdWN0Q291bnQpLS07CiAgICAgICAgICAgIHByaW50ZigiUHJvZHVjdCBkZWxldGVkIHN1Y2Nlc3NmdWxseSFcbiIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCJQcm9kdWN0IHdpdGggSUQgJWQgbm90IGZvdW5kXG4iLCBpZCk7Cn0KCnZvaWQgc2VsbFByb2R1Y3QoUHJvZHVjdCBwcm9kdWN0c1tdLCBpbnQgKnByb2R1Y3RDb3VudCkgewogICAgaW50IGlkLCBxdWFudGl0eTsKICAgIHByaW50ZigiRW50ZXIgdGhlIHByb2R1Y3QgSUQgdG8gc2VsbDogIik7CiAgICBzY2FuZigiJWQiLCAmaWQpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKnByb2R1Y3RDb3VudDsgaSsrKSB7CiAgICAgICAgaWYgKHByb2R1Y3RzW2ldLmlkID09IGlkKSB7CiAgICAgICAgICAgIHByaW50ZigiUXVhbnRpdHkgdG8gc2VsbDogIik7CiAgICAgICAgICAgIHNjYW5mKCIlZCIsICZxdWFudGl0eSk7CgogICAgICAgICAgICBpZiAocXVhbnRpdHkgPiBwcm9kdWN0c1tpXS5zdG9jaykgewogICAgICAgICAgICAgICAgcHJpbnRmKCJOb3QgZW5vdWdoIHN0b2NrIVxuIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwcm9kdWN0c1tpXS5zdG9jayAtPSBxdWFudGl0eTsKICAgICAgICAgICAgICAgIHByaW50ZigiUHJvZHVjdCBzb2xkIHN1Y2Nlc3NmdWxseS4gVG90YWw6ICUuMmZcbiIsIHByb2R1Y3RzW2ldLnByaWNlICogcXVhbnRpdHkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBwcmludGYoIlByb2R1Y3Qgd2l0aCBJRCAlZCBub3QgZm91bmRcbiIsIGlkKTsKfQoKdm9pZCBzYXZlVG9GaWxlKFByb2R1Y3QgcHJvZHVjdHNbXSwgaW50IHByb2R1Y3RDb3VudCkgewogICAgRklMRSAqZmlsZSA9IGZvcGVuKEZJTEVOQU1FLCAidyIpOwogICAgaWYgKGZpbGUgPT0gTlVMTCkgewogICAgICAgIHByaW50ZigiVW5hYmxlIHRvIHNhdmUgZGF0YSB0byBmaWxlXG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcm9kdWN0Q291bnQ7IGkrKykgewogICAgICAgIGZwcmludGYoZmlsZSwgIiVkLCVzLCUuMmYsJWRcbiIsIHByb2R1Y3RzW2ldLmlkLCBwcm9kdWN0c1tpXS5uYW1lLCBwcm9kdWN0c1tpXS5wcmljZSwgcHJvZHVjdHNbaV0uc3RvY2spOwogICAgfQoKICAgIGZjbG9zZShmaWxlKTsKICAgIHByaW50ZigiRGF0YSBzYXZlZCBzdWNjZXNzZnVsbHkhXG4iKTsKfQoKdm9pZCBsb2FkRnJvbUZpbGUoUHJvZHVjdCBwcm9kdWN0c1tdLCBpbnQgKnByb2R1Y3RDb3VudCkgewogICAgRklMRSAqZmlsZSA9IGZvcGVuKEZJTEVOQU1FLCAiciIpOwogICAgaWYgKGZpbGUgPT0gTlVMTCkgewogICAgICAgIHByaW50ZigiTm8gZGF0YSBmaWxlIGZvdW5kLiBTdGFydGluZyB3aXRoIGFuIGVtcHR5IHN5c3RlbVxuIik7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICpwcm9kdWN0Q291bnQgPSAwOwogICAgd2hpbGUgKGZzY2FuZihmaWxlLCAiJWQsJTQ5W14sXSwlZiwlZFxuIiwgJnByb2R1Y3RzWypwcm9kdWN0Q291bnRdLmlkLCBwcm9kdWN0c1sqcHJvZHVjdENvdW50XS5uYW1lLCAmcHJvZHVjdHNbKnByb2R1Y3RDb3VudF0ucHJpY2UsICZwcm9kdWN0c1sqcHJvZHVjdENvdW50XS5zdG9jaykgIT0gRU9GKSB7CiAgICAgICAgKCpwcm9kdWN0Q291bnQpKys7CiAgICB9CgogICAgZmNsb3NlKGZpbGUpOwogICAgcHJpbnRmKCJEYXRhIGxvYWRlZCBzdWNjZXNzZnVsbHkhXG4iKTsKfQo=
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PRODUCTS 100
#define FILENAME "products.txt"
// Struct for storing product information
typedef struct {
int id;
char name[50];
float price;
int stock;
} Product;
// Function declarations
void addProduct(Product products[], int *productCount);
void displayProducts(Product products[], int productCount);
void editProduct(Product products[], int productCount);
void deleteProduct(Product products[], int *productCount);
void sellProduct(Product products[], int *productCount);
void saveToFile(Product products[], int productCount);
void loadFromFile(Product products[], int *productCount);
int main() {
Product products[MAX_PRODUCTS];
int productCount = 0;
int choice;
// Load data from file
loadFromFile(products, &productCount);
while (1) {
printf("\n===== Shop Management System =====\n");
printf("1. Add New Product\n");
printf("2. Display Products\n");
printf("3. Edit Product Information\n");
printf("4. Delete Product\n");
printf("5. Sell Product\n");
printf("6. Save Data to File\n");
printf("7. Exit Program\n");
printf("Select an option: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addProduct(products, &productCount);
break;
case 2:
displayProducts(products, productCount);
break;
case 3:
editProduct(products, productCount);
break;
case 4:
deleteProduct(products, &productCount);
break;
case 5:
sellProduct(products, &productCount);
break;
case 6:
saveToFile(products, productCount);
break;
case 7:
printf("Saving data and exiting the program\n");
saveToFile(products, productCount);
return 0;
default:
printf("Invalid option!\n");
}
}
}
void addProduct(Product products[], int *productCount) {
if (*productCount >= MAX_PRODUCTS) {
printf("Cannot add more products\n");
return;
}
Product newProduct;
newProduct.id = *productCount + 1;
printf("Product Name: ");
scanf(" %[^
]", newProduct.name);
printf("Price: ");
scanf("%f", &newProduct.price);
printf("Stock Quantity: ");
scanf("%d", &newProduct.stock);
products[*productCount] = newProduct;
(*productCount)++;
printf("Product added successfully!\n");
}
void displayProducts(Product products[], int productCount) {
if (productCount == 0) {
printf("No products available\n");
return;
}
printf("\nProduct List\n");
printf("====================\n");
for (int i = 0; i < productCount; i++) {
printf("ID: %d | Name: %s | Price: %.2f | Stock: %d\n",
products[i].id, products[i].name, products[i].price, products[i].stock);
}
}
void editProduct(Product products[], int productCount) {
int id;
printf("Enter the product ID to edit: ");
scanf("%d", &id);
for (int i = 0; i < productCount; i++) {
if (products[i].id == id) {
printf("New Product Name: ");
scanf(" %[^
]", products[i].name);
printf("New Price: ");
scanf("%f", &products[i].price);
printf("New Stock Quantity: ");
scanf("%d", &products[i].stock);
printf("Product information updated successfully!\n");
return;
}
}
printf("Product with ID %d not found\n", id);
}
void deleteProduct(Product products[], int *productCount) {
int id;
printf("Enter the product ID to delete: ");
scanf("%d", &id);
for (int i = 0; i < *productCount; i++) {
if (products[i].id == id) {
for (int j = i; j < *productCount - 1; j++) {
products[j] = products[j + 1];
}
(*productCount)--;
printf("Product deleted successfully!\n");
return;
}
}
printf("Product with ID %d not found\n", id);
}
void sellProduct(Product products[], int *productCount) {
int id, quantity;
printf("Enter the product ID to sell: ");
scanf("%d", &id);
for (int i = 0; i < *productCount; i++) {
if (products[i].id == id) {
printf("Quantity to sell: ");
scanf("%d", &quantity);
if (quantity > products[i].stock) {
printf("Not enough stock!\n");
} else {
products[i].stock -= quantity;
printf("Product sold successfully. Total: %.2f\n", products[i].price * quantity);
}
return;
}
}
printf("Product with ID %d not found\n", id);
}
void saveToFile(Product products[], int productCount) {
FILE *file = fopen(FILENAME, "w");
if (file == NULL) {
printf("Unable to save data to file\n");
return;
}
for (int i = 0; i < productCount; i++) {
fprintf(file, "%d,%s,%.2f,%d\n", products[i].id, products[i].name, products[i].price, products[i].stock);
}
fclose(file);
printf("Data saved successfully!\n");
}
void loadFromFile(Product products[], int *productCount) {
FILE *file = fopen(FILENAME, "r");
if (file == NULL) {
printf("No data file found. Starting with an empty system\n");
return;
}
*productCount = 0;
while (fscanf(file, "%d,%49[^,],%f,%d\n", &products[*productCount].id, products[*productCount].name, &products[*productCount].price, &products[*productCount].stock) != EOF) {
(*productCount)++;
}
fclose(file);
printf("Data loaded successfully!\n");
}