作者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