精華區beta SetupBBS 關於我們 聯絡資訊
參照之前名片檔多頁的寫法 和LinAndy在SOB版POST解決簽名檔的方法改了一下 不過因為敝站的簽名檔的編輯跟原本的SOB不太一樣(仿maple 3) 所以我改的部份只是用於寫信或發表文章時加簽名檔的部份 嗯嗯 :p 沒有最佳化 改的亂亂的 大家就test看看(這個寫法就是沒用到user.c的showsig..) edit.c addsig() { FILE *fs; int i=0,j,m,n=0,k=0; char buf[WRAPMARGIN + 1]; char buf1[256]; char ans[3]; char fpath[STRLEN]; char ch; char sigch; char askmsg[100]; static char msg[] = "請選擇簽名檔 (1-9, 0=不加)[0]:\n"; if (!currutmp->userlevel) return; msg[27] = ch = '0' | (cuser.uflag & SIG_FLAG); /*chyiuan add*/ clear(); move(0,0); prints(msg); setuserfile(fpath, "sig.0"); j = strlen(fpath) - 1; for (sigch = '1'; sigch <= '9'; sigch++) { fpath[j] = sigch; if (fs = fopen(fpath, "r")) { prints("【 簽名檔.%c 】\n", sigch); i++; for (m = 0; m++ < MAXSIGLINES && fgets(buf1, 256, fs); outs(buf1)) { if (i++ == 21) { move(b_lines,0); outmsg("[SPACE]往下一頁繼續,[數字0~9]選擇簽名檔,[ENTER]使用設定"); do{ k = egetch(); }while(k!='0'&&k!='1'&&k!='2'&&k!='3'&&k!='4'&&k!='5'&&k!='6'&&k!='7' && k!='8'&& k!='9'&& k!='\r'&& k!='\n'&&k!=' '); if (k=='0'||k=='1'||k=='2'||k=='3'||k=='4'||k=='5'||k=='6'||k=='7' ||k=='8'||k=='9') { sprintf(askmsg,"你確定要使用第%d個簽名檔嗎?[y/n]:",k-48); getdata(0,0,askmsg,ans,3,DOECHO,0); if(ans[0]!='n' && ans[0]!='N') { buf[0]=k; } else { buf[0]=ch; } sigch='9'; n=1; clear(); } else if (k=='\n' || k=='\r') { sprintf(askmsg,"使用原先設定的簽名檔[%d]",ch-48); pressanykey1(askmsg); buf[0]=ch; n=1; clear(); } else { clear(); move(0,0); prints(msg); move(2,0); i=1; } } } fclose(fs); } } if(n!=1) { move(b_lines,0); outmsg("[數字0~9]決定使用簽名檔, 或[Enter]使用原先設定的"); do{ k = egetch(); }while(k!='0'&&k!='1'&&k!='2'&&k!='3'&&k!='4'&&k!='5'&&k!='6'&&k!='7' && k!='8'&& k!='9'&&k!='\n'&&k!='\r'); if(k=='\r'||k=='\n') { sprintf(askmsg,"使用原先設定的簽名檔[%d]",ch-48); pressanykey1(askmsg); buf[0]=ch; } else if (k=='0'||k=='1'||k=='2'||k=='3'||k=='4'||k=='5'||k=='6'||k=='7' ||k=='8'||k=='9') { sprintf(askmsg,"你確定要使用第%d個簽名檔嗎?[y/n]:",k-48); getdata(0,0,askmsg,ans,3,DOECHO,0); if(ans[0]!='n' && ans[0]!='N') { buf[0]=k ; } else { buf[0]=ch; } } } i=j; if (ch != buf[0] && buf[0] >= '0' && buf[0] <= '9') { ch = buf[0]; cuser.uflag = (cuser.uflag & ~SIG_FLAG) | (ch & SIG_FLAG); } if (ch != '0') { fpath[i] = ch; if (fs = fopen(fpath, "r")) { insert_string("\n--\n"); for (i = 0; i < MAXSIGLINES && fgets(buf, sizeof(buf), fs); i++) insert_string(buf); fclose(fs); } } }