游戏.数据包程序

/**************************************************
game Data Storage Demo code
http://blow.csdn.net/chinayaosir
**************************************************/
//0.头文件
#include <windows.h>
#include <stdio.h>
//1.数据包类定义
class cDataPackage
{
  protected:
     void *m_Buf;
    unsigned long m_Size;

  public:
    cDataPackage()  { m_Buf = NULL; m_Size = 0; }
    ~cDataPackage() { Free();                   }

    void *Create(unsigned long Size) {
      Free();
        return (m_Buf = (void*)new char[(m_Size = Size)]);
    }

    void Free() { delete m_Buf; m_Buf = NULL; m_Size = 0; }

    BOOL Save(char *Filename)
    {
      FILE *fp;
      if(m_Buf != NULL && m_Size) {
        if((fp=fopen(Filename, "wb")) != NULL) {
          fwrite(&m_Size, 1, 4, fp);
          fwrite(m_Buf, 1, m_Size, fp);
          fclose(fp);
          return TRUE;
        }
      }
 
      return FALSE;
    }

    void *Load(char *Filename, unsigned long *Size)
    {
      FILE *fp;
      Free();
       if((fp=fopen(Filename, "rb"))!=NULL) {
        // Read in size and data
        fread(&m_Size, 1, 4, fp);
        if((m_Buf = (void*)new char[m_Size]) != NULL)
          fread(m_Buf, 1, m_Size, fp);
        fclose(fp);
 
        // Store size to return
        if(Size != NULL)
          *Size = m_Size;
          return m_Buf;
      }

      return NULL;
    }
};


// 一个包含名字的测试结构sName
typedef struct {
  char Name[32];
} sName;


int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, /
                   LPSTR szCmdLine, int nCmdShow)
{
  cDataPackage DP;
  DWORD Size;
  // Create the data package (w/128 bytes) and get the
  // pointer, casting it to an sName structure type.
  sName *Names = (sName*)DP.Create(128);

  // Since there are 128 bytes total, and each name uses 32 bytes,
  //then I can have 4 names stored.
  strcpy(Names[0].Name, "zhangsan");
  strcpy(Names[1].Name, "lishi");
  strcpy(Names[2].Name, "wanger");
  strcpy(Names[3].Name, "chinayaosir");
  // Save the names to disk and free the data buffer
  DP.Save("names.dat");
  DP.Free();

  // Load the names from disk. Size will equal 128
  // when the load function returns.
  Names = (sName*)DP.Load("names.dat", &Size);

  // Display the names
  MessageBox(NULL, Names[0].Name, "the 1 Name ", MB_OK);
  MessageBox(NULL, Names[1].Name, "the 2 Name ", MB_OK);
  MessageBox(NULL, Names[2].Name, "the 3 Name ", MB_OK);
  MessageBox(NULL, Names[3].Name, "the 4 Name ", MB_OK);
  // Free up the data package
  DP.Free();

  return 0;
}

 

/*

run value:生成一个names.dat文件,并存有4个名字,然后用对话框显示结果

 

*/

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值