last

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
2.0 kB
2
Indexable
#include <windows.h>

struct GOODS { //Структура, описывающая изделия на складе 
    int Nmb; //Номер изделия 
    int Price; //Цена изделия 
};

const int N = 1000;//Пусть на складе тысяча образцов изделий 

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{

    GOODS Stock[N]; //Создадим в памяти массив для всех изделий 
    GOODS Unit1, Unit2;//Структурные переменные для двух изделий 
    DWORD dwCount;//Для функций чтения/записи 
    for (int i = 0; i < N; i++)
    {//Заполним массив структур 
        Stock[i].Nmb = i + 1;//тестовыми данными 
        Stock[i].Price = (i + 1) + 20;
    }

    HANDLE hFile = CreateFile("stock.dat", GENERIC_READ | GENERIC_WRITE,
        0, NULL, CREATE_ALWAYS, 0, NULL);

    /*Запишем весь массив а фалл*/
    WriteFile(hFile, Stock, sizeof(Stock), &dwCount, NULL);

    /*Сместим указатель н прочитаем последнюю запись файла */
    SetFilePointer(hFile, sizeof(GOODS) * (N - 1), NULL, FILE_BEGIN);
    ReadFile(hFile, &Unit1, sizeof(GOODS), &dwCount, NULL);

    /*Закроем файл, откроем снова и прочитаем первую запись файла */
    CloseHandle(hFile);
    hFile = CreateFile("stock.dat", GENERIC_READ, 0, NULL, OPEN_EXISTING,
        0, NULL);
    ReadFile(hFile, &Unit2, sizeof(GOODS), &dwCount, NULL);

    /*Вывлдем прочитанное в окно сообщения*/
    char szT[200];
    wsprintf(szT, "День № %d\n %d рублей\n-------------\n"
        "День № %d\n %d рублей",
        Unit1.Nmb, Unit1.Price, Unit2.Nmb, Unit2.Price);
    MessageBox(NULL, szT, "Info", MB_OK);
    CloseHandle(hFile);//Закроем для порядка файл 
    return 0;
}