分享
 
 
 

BBS程序设计3--常用函数(上)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

发信人: loveyou (独梦人), 信区: Das_Room

标 题: BBS程序设计3--常用函数(上)

发信站: 锦城驿站 (Tue Apr 25 20:32:51 2000), 转信

当您来到src目录里,您的头一定大了一倍.呵呵,别怕,这里有很多不用的东东.

首先是*.o文件,它是编译BBS时产生的输入文件(* 注意,编译BBS时并不是对于

每一个文件都产生一个可执行文件 *) 如FB7.0是产生bbsd的可执行文件,它是

BBS驱动程式.这里也不多说了.反正*.o的东东您不要管.

不说没有用的了,就说有用的吧,告诉你*.c的文件都是BBS的源程序.它们是有用

的,这么说直接了吧.:PP

才开始学,您只要看*.C文件就行了.

下面,我开始一一讲.(* 工程确实很大,唉,慢慢来吧,我尽量用易懂的方法讲 *)

用户一开始登陆,首先系统调用的是bbsd.c程序,里面一般您不要改,除非您对

操作系统很熟,对BBS程序很熟.它能被用户看到的只有进站画面前面的一行:

当前系统负荷 .....(我记不清了:PP)

一一讲实在太多,我拿常用到的讲讲吧,那些不常用的,以后我有时间再说.

======================================================================

说这些之前,我先告诉大家一些BBS编程中常常用到的函数.

======================================================================

currentuser

这是一个全局的常量.它是一个userec结构.你在编程中可以随时的使用,而不

需要定义.它个各种属性您可以在include目录的struct.h文件里查到.我在这里给

大家贴出来讲一下:

struct userec {

char userid[IDLEN+2]; //用户代号

// char fill[30];

time_t firstlogin; //用户第一次上站的时间

char lasthost[16]; //用户最后一次上站的地址

unsigned int numlogins; //上次次数

unsigned int numposts; //发表文章数

char flags[2]; //好象定义标识的(我也不太清楚)

char passwd[PASSLEN]; //用户的密码

char username[NAMELEN]; //用户的妮称

char ident[NAMELEN]; //在main.c中设置的.不用管它.

char termtype[STRLEN]; //用户的终端类型

char termtype[STRLEN]; //用户的终端类型

unsigned userlevel; //用户的权限

time_t lastlogin; //用户最后一次上站时间

time_t stay; //用户在站的总共停留的时间

char realname[NAMELEN]; //真实姓名

char address[STRLEN]; //真实住址

char email[STRLEN]; //真实E-mail

int signature; //目前使用的签名档

unsigned int userdefine; //用户的参数设置

time_t notedate; //用户上次看留言板的时间

int noteline; //看过留言板的行数

int notemode; //用户看留言板的模式(全看,只看没

看过的,都不看)

// int unuse1;/* no use*/ //为以后填加更多的属性而设置的,没

// int unuse3;/* no use*/

};

这些属性的用法前面我已经说过,我再说一次:

如果你想得到当前用户的上站次数就是currentuser.numlogins

它的返回值就是.

你不用全都记住,用到时再来查,慢慢的你就会记住了.

===========================================================================

===========================================================================

HAS_PERM()

这个函数也是常用的,是判断当前用户是否具有某个权限.

如当某用户在文章前按下d时,系统要判断这个用户是否具有板主的

权限,如果没有,就马上返回:

if ( !HAS_PERM(PERM_BOARDER) ) return;

PERM_BOARDER是在权限设置里设置好了的,你可以到include目录下的

permissions.h文件里查找。下面我例出来讲解一下:

"基本权力", /* PERM_BASIC */

"进入聊天室", /* PERM_CHAT */

"呼叫他人聊天", /* PERM_PAGE */

"发表文章", /* PERM_POST */

"使用者资料正确", /* PERM_LOGINOK */

"禁止发表文章", /* PERM_DENYPOST */

"隐身术", /* PERM_CLOAK */

"看穿隐身术", /* PERM_SEECLOAK */

"帐号永久保留", /* PERM_XEMPT */

"编辑进站画面", /* PERM_WELCOME */

"板主", /* PERM_BOARDS */

"帐号管理员", /* PERM_ACCOUNTS */

"本站智囊团", /* PERM_CHATCLOAK */

"投票管理员", /* PERM_OVOTE */

"系统维护管理员", /* PERM_SYSOP */

"Read/Post 限制", /* PERM_POSTMASK */

"精华区总管", /* PERM_ANNOUNCE*/

"讨论区总管", /* PERM_OBOARDS*/

"活动看版总管", /* PERM_ACBOARD*/

"不能 ZAP(讨论区专用)", /* PERM_NOZAP*/

"强制呼叫", /* PERM_FORCEPAGE*/

"延长发呆时间", /* PERM_EXT_IDLE*/

"特殊权限 1", /* PERM_SPECIAL1*/

.....

以下还有几个特殊权限是没用的。

=====================================================================

DEFINE()

这个函数是判断用户个人参数里是否设置为YES

如在发信息的程序里要判断这个用户是否收到信息时发出声音:

if ( DEFINE(DEF_SOUNDMSG) ) beep(1);

这些参数在permissions.h里定义了,我例出如下:

"呼叫器关闭时可让好友呼叫", /* DEF_FRIENDCALL */

"接受所有人的讯息", /* DEF_ALLMSG */

"接受好友的讯息", /* DEF_FRIENDMSG */

"收到讯息发出声音", /* DEF_SOUNDMSG */

"收到讯息发出声音", /* DEF_SOUNDMSG */

"使用彩色", /* DEF_COLOR */

"显示活动看版", /* DEF_ACBOARD */

"显示选单的讯息栏", /* DEF_ENDLINE */

"编辑时显示状态栏", /* DEF_EDITMSG */

"讯息栏采用一般/精简模式", /* DEF_NOTMSGFRIEND */

"选单采用一般/精简模式", /* DEF_NORMALSCR */

"分类讨论区以 New 显示", /* DEF_NEWPOST */

"阅读文章是否使用绕卷选择", /* DEF_CIRCLE */

"阅读文章游标停于第一篇未读", /* DEF_FIRSTNEW */

"进站时显示好友名单", /* DEF_LOGFRIEND */

"进站时显示备忘录", /* DEF_INNOTE */

"离站时显示备忘录", /* DEF_OUTNOTE */

"离站时询问寄回所有讯息", /* DEF_MAILMSG */

"使用自己的离站画面", /* DEF_LOGOUT */

"我是这个组织的成员", /* DEF_SEEWELC1 */

"好友上站通知", /* DEF_LOGINFROM */

"观看留言版", /* DEF_NOTEPAD*/

"不要送出上站通知给好友", /* DEF_NOLOGINSEND */

"主题式看版", /* DEF_THESIS */

"收到讯息等候回应或清除", /* DEF_MSGGETKEY */

"汉字整字删除", /* DEF_DELDBLCHAR */

"使用GB码阅读" /* DEF_USEGB */

"使用GB码阅读" /* DEF_USEGB */

====================================================================

move(x,y)

将当前光标移到屏幕(x,y)点处。

====================================================================

clear() 与 clrtoeol()

两上函数都为清屏。

是有区别的,clear()是指清除当前屏幕所有,也就是全清。

clrtoeol()是清除当前行,这个函数你只要记住一般常与move()联用。

如你想在用户屏幕第一行第一例显示一行信息:

move(1,1);

clrtoeol();

prints("看到这行了嘛?");

这个clrtoeol()函数的目的就是把用户的这一行以前的字符清除,然后

再把"看到这..."这串字符显示上去.

所以,当你要清屏时就用clear(),当你要清除当前行时就用clrtoeol()

====================================================================

prints()

在当前光标处显示某字符串。

如: prints("HI,你好!");

也可以带变量: prints("hi %s,welcome!",currentuser.userid);

假如当前用户是我,则对我显示: hi loveyou,welcome!

假如当前用户是我,则对我显示: hi loveyou,welcome!

根据这个,您可以灵活运用之!

===================================================================

printf()

把一些字符串保存到某字符串变量里。

如要把当前用户的BBSE-mail保存到usermail字符串内:

char usermail[30];

printf(&usermail,"%s.bbs@%s",currentuser.userid,MY_BBS_DOMAIN);

则如果当前用户是我,那usermail字符串变量里保存的是:

loveyou.bbs@bbs.swjtu.edu.cn

那个MY_BBS_DOMAIN是在include目录下config.h文件内定义的全局常量,还

有很多有用的,你可以去看看。

=====================================================================

--

※ 来源:·梅陇客栈 bbs.ecust.edu.cn·[FROM: 211.144.72.160]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有