回文章列表
作者hpo14.bbs@ntust.org (陌生) 看板: itoc
標題Re: [問題] 秀出住址(acct.c)跟showRFORM
時間資工清流站 (2007/04/13 Fri 06:03:06)
※ 引述《hpo14 (陌生)》之銘言:
> ※ 引述《itoc.bbs@cpu.tfcis.org (核心動力)》之銘言:
> >   其中 4. 就是在 struct ACCT 內加 char address[80];

不知道我這樣改可不可以用....

附上我修改的程式碼

#include "bbs.h"
/* ----------------------------------------------------- */
/* (新的) 使用者帳號 .ACCT struct                          */
/* ----------------------------------------------------- */
typedef struct          /* 要和新版程式 struct 一樣 */
{
  int userno;                 /* unique positive code */
  …
  char email[60];       /* 目前登記的電子信箱 */
+  char address[60];     /* 目前登記的住址 */
}   NEW;

/* ----------------------------------------------------- */
/* (舊的) 使用者帳號 .ACCT struct            */
/* ----------------------------------------------------- */
typedef struct          /* 要和舊版程式 struct 一樣 */
{
  int userno;                 /* unique positive code */
  …
  char email[60];       /* 目前登記的電子信箱 */
}   OLD;

/* ----------------------------------------------------- */
/* 轉換主程式                        */
/* ----------------------------------------------------- */
static void
!trans_acct(old, new, fpr)
  OLD *old;
  NEW *new;
+  FILE *fpr;
{
+  RFORM rform;

  memset(new, 0, sizeof(NEW));
  new->userno = old->userno;

  …

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

+  fseek(fpr, sizeof(RFORM), 0);  /* reset fread */
+  while (fread(&rform, sizeof(RFORM), 1, fpr) == 1)
+  {
+    if (rform.userno == new->userno && rform.userid == new->userid)
+      str_ncpy(new->address, rform.address);
+    else
+      str_ncpy(new->address, "未登記 或 資料遺失");
+  }
+  printf("new address: %s\n", new->address);
}


int
main(argc, argv)
  int argc;
  char *argv[];
{
  NEW new;
  char c;
+  FILE *fp;

+  chdir(BBSHOME);
+  if (!(fp = fopen(FN_RUN_RFORM_LOG, "r")))
+    return 0;

  if (argc > 2)
  {
    printf("Usage: %s [userid]\n", argv[0]);
    return -1;
  }

  for (c = 'a'; c <= 'z'; c++)
  {
    …
    while (de = readdir(dirp))
    {
      …
      unlink(buf);          /* itoc.010831: 砍掉原來的 FN_ACCT */
!      trans_acct(&old, &new, fp);
        …
    }
+    fclose(fp);
    closedir(dirp);
  }
  return 0;
}

--
>> 台灣科技大學 資工清流站 # ntust.org #
>> Author: 61.59.78.243
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻