回精華區
作者itoc.bbs@xeon.tfcis.org (test), 看板: plan
標題Re: [閒聊] 好開心喔~
時間XEON (Fri Aug 9 01:00:02 2002)
  以要加上 feeling 為例子

: transacct.c

  NEW 加上一個新欄位 feeling
  OLD 是舊的 struct ACCT

struct NEW                      /* 要和新版程式 struct 一樣 */
{
  int userno;                   /* unique positive code */

  char userid[IDLEN + 1];       /* ID */
  char passwd[PASSLEN];         /* 密碼 */
  char realname[20];            /* 真實姓名 */
  char username[24];            /* 暱稱 */
+ char feeling[5];              /* 心情 */

  usint userlevel;              /* 權限 */
  usint ufo;                    /* habit */
  uschar signature;             /* 預設簽名檔 */

  char year;                    /* 生日(民國年) */
  char month;                   /* 生日(月) */
  char day;                     /* 生日(日) */
  char sex;                     /* 性別 */
  int money;                    /* 銀幣 */
  int gold;                     /* 金幣(擴充用) */

  int numlogins;                /* 上站次數 */
  int numposts;                 /* 發表次數 */
  int numemails;                /* 寄發 Inetrnet E-mail 次數 */

  time_t firstlogin;            /* 第一次上站時間 */
  time_t lastlogin;             /* 上一次上站時間 */
  time_t tcheck;                /* 上次 check 信箱/好友名單的時間 */
  time_t tvalid;                /* 通過認證的時間 */

  char lasthost[30];            /* 上次登入來源 */
  char email[60];               /* 目前登記的電子信箱 */
};


struct OLD                      /* 要和舊版程式 struct 一樣 */
{
  int userno;                   /* unique positive code */

  char userid[IDLEN + 1];       /* ID */
  char passwd[PASSLEN];         /* 密碼 */
  char realname[20];            /* 真實姓名 */
  char username[24];            /* 暱稱 */

  usint userlevel;              /* 權限 */
  usint ufo;                    /* habit */
  uschar signature;             /* 預設簽名檔 */

  char year;                    /* 生日(民國年) */
  char month;                   /* 生日(月) */
  char day;                     /* 生日(日) */
  char sex;                     /* 性別 */
  int money;                    /* 銀幣 */
  int gold;                     /* 金幣(擴充用) */

  int numlogins;                /* 上站次數 */
  int numposts;                 /* 發表次數 */
  int numemails;                /* 寄發 Inetrnet E-mail 次數 */

  time_t firstlogin;            /* 第一次上站時間 */
  time_t lastlogin;             /* 上一次上站時間 */
  time_t tcheck;                /* 上次 check 信箱/好友名單的時間 */
  time_t tvalid;                /* 通過認證的時間 */

  char lasthost[30];            /* 上次登入來源 */
  char email[60];               /* 目前登記的電子信箱 */
};

: transaccct.c trans_acct()

static void
trans_acct(old, new)
  OLD *old;
  NEW *new;
{
  memset(new, 0, sizeof(NEW));

  new->userno = old->userno;

  str_ncpy(new->userid, old->userid, sizeof(new->userid));
  strcpy(new->passwd, old->passwd);
  str_ncpy(new->realname, old->realname, sizeof(new->realname));
  str_ncpy(new->username, old->username, sizeof(new->username));
+ str_ncpy(new->feeling, "快樂", sizeof(new->feeling));     /* 給初始值 */

  new->userlevel = old->userlevel;
  new->ufo = transfer_ufo(old->ufo);    /* itoc.010917: ufo 欄位未必一樣 */
  new->signature = old->signature;

- new->year = 0;                /* 給初始值 */
- new->month = 0;
- new->day = 0;
- new->sex = 0;
- new->money = 100;
- new->gold = 1;
+ new->year = old->year;
+ new->month = old->month;
+ new->day = old->day;
+ new->sex = old->sex;
+ new->money = old->money;
+ new->money = old->gold;

  new->numlogins = old->numlogins;
  new->numposts = old->numposts;
  new->numemails = old->numemail;

  new->firstlogin = old->firstlogin;
  new->lastlogin = old->lastlogin;
  new->tcheck = old->tcheck;
  new->tvalid = old->tvalid;

  str_ncpy(new->lasthost, old->lasthost, sizeof(new->lasthost));
  str_ncpy(new->email, old->email, sizeof(new->email));
}

> ---------------------------------------------- <

  同理,發行新的幣制,也是用 transacct
  struct NEW 和 struct OLD 都寫成和 struct ACCT 一樣
  然後 main() 裡面改這句

  new.money = old.money / 40000;

--
□ Origin: 動力核心 xeon.tfcis.org  □ From: itoc.Dorm-GD2.NCTU.edu.tw
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻