Определить, имеется ли в текстовом файле запись об указанном товаре - C (СИ)
Формулировка задачи:
Как изменить(уменшить количество) в файле?Не могу сделать,остальное работает.Помогите,пожалуйста)
Дан файл, содержащий информацию о наличии товаров на складе. Структура записи файла: шифр товара, наименование, количество, цена.
Написать программу, которая
- при покупке товара проверяет, имеется ли в наличии заданное количество соответствующего товара, и если имеется, изменяет в файле соответствующую запись (уменьшает количество), вычисляет и печатает стоимость товара;
Решение задачи: «Определить, имеется ли в текстовом файле запись об указанном товаре»
textual
Листинг программы
#include <stdio.h>
#define filename "basashop.dat"
int main(){
struct info{
int shifr;
char name[80];
int count;
int cost;
};
int info,i=0,number=0;
FILE * fin;
fin=fopen(filename,"r+");
printf("Введите порядковый номер товара: ");
scanf("%d", &number);
printf("Введите количество товара, которое продано: ");
scanf("%d", &i);
fseek(fin,sizeof(info)*number-1,0);
fread(&info,sizeof(info),1,fin);
if(info.count>i){
printf("Profit");
info.count-=i; // уменьшаем количество доступного товара в магазине
}
fseek(fin,sizeof(info)*number-1,0); //еще раз перемещаем указатель, т.к. при чтении *кирпича* в виде структуры указатель сместился на sizeof(info) к концу файла
fwrite(&info,sizeof(info),1,fin); // записываем структуру с поправками в количестве
fclose(fin);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Объявление файла, в котором будет осуществляться поиск записи о товаре
- Объявление структуры данных, представляющей один товар
- Объявление переменных для хранения информации о товаре и его количестве
- Открытие файла с помощью функции fopen() для чтения и записи
- Получение от пользователя номера товара и количества проданного товара
- Перемещение указателя файла к нужному товару с помощью функции fseek()
- Чтение информации о товаре с помощью функции fread()
- Проверка наличия товара в магазине
- Если товар есть, то уменьшение его количества на количество проданного товара
- Перемещение указателя файла обратно к записи о товаре
- Запись измененной информации о товаре в файл с помощью функции fwrite()
- Закрытие файла с помощью функции fclose()
- Завершение программы