发信人: loveyou (独梦人), 信区: Das_Room 标 题: BBS程序设计3--常用函数(下) 发信站: 锦城驿站 (Wed Apr 26 14:26:07 2000), 转信
BBS自己定义的函数很多.不可以都说.常用的也不可能都说完.关于哪方面的 您可以自己去找找,看看人家是怎么写的,怎么用的.我现在只记得一点点而已 大多数都是在用到时到程序里面去查的. ===================================================================
securityreport()
这个就是进行系统记录的函数。如当您删除某个账号,那么就会在系统 安全记录讨论区内自动产生这个记录,就是调用的这个函数。 例子: 当您确定删除讨论区后,要写上 char secu[STRLEN];
sprintf(secu,"删除讨论区:",binfo.filename);
securityreport(secu);
则删除讨论区test后就会在security讨论区中看到文章,题目是“删除 讨论区:text”,内容是您的各种资料。 ===================================================================
show_help(HELP文件名) show_help(HELP文件名) BBS系统的help文件一般放到bbshome的help目录里面.您可以去看看. 也就是一般的/home/bbs/help目录里. 如我想在用户聊天时按CTRL+H就可以查看help: 首先我在help目录里用编辑器编辑一文件: onchathelp 里面写上帮助信息 然后在聊天的程序talk.c文件里的do_talk_char()函数里(你可以查找一下) switch语句里加入: case Ctrl('H'): show_help("help/onchathelp"); return; 这样就可以了.当用户在聊天时按下ctrl+h时就会显示你的onchathelp文件 内容.BBS程序里缺省的当前目录就是BBSHOME的根目录,所以你不用写 /home/bbs/help/onchathelp 而直接写 help/onchathelp就可以了 ===================================================================== m_send(用户ID) 给某用户发信. ===================================================================== do_sendmsg() 这是发信息的函数,它的参数有点复杂.不是很清楚的话不要用. 我大概说一下: 要给站上某人发信息,要先得到它的user_info结构.(自已学吧) 如得到某人user_info结构保存在user_record里面,那你就可以这样发信息: do_sendmsg(user_record,NULL,0,user_record.pid); do_sendmsg(user_record,NULL,0,user_record.pid); ~~~~~~~~~~~~~~~这是保存在user_info 结构里的用户进程. ====================================================================== getdata() 这个可是个很有用的函数,它的参数也很多,但不难.记住就行了. 它在某个确定位置得到用户的输入. getdata(0,0,"请输入密码:",passbuf,15,NOECHO,NULL,YEA); 0,0指在X,Y处显示"请输入密码:"等待用户输入. NOECHO指用户的输入以'*'号显示,也可以用DOECHO正常显示. NULL指用户什么也不输入,而直接回车时的缺省值. passbuf是用来保存用户所输入的内容,你可以在下面接着用 它来判断用户输入了什么. ===================================================================== pressanykey() 这个函数没有参数.是指要求用户按任意键继续. 如你在BBS查询收到的信息,当翻到最后一屏时最下面显示的是: 按任意键继续... 这就是用了pressanykey()函数的结果. ===================================================================== modify_user_mode() 它是定义当前用户的状态.只有一个参数. 例: 当用户开始聊天时写上 modify_user_mode( TALK ); 例: 当用户开始聊天时写上 modify_user_mode( TALK ); 这个"TALK"是在include目录的modes.h文件里定义了的. 您可以自己查看. ===================================================================== setuserfile() 返回用户的home目录里的某文件的全路径名. (* 我先说明一下:用户的home所在位置就在BBSHOME目录下的 home/用户ID的第一个字母大写/用户代号/ 这个目录里保 存了每个用户的说明档,注册资料,未保存的信息等等 *) 例子: 如想显示用户收到的信息 chat fname[STRLEN]; setuserfile(fname,"msgfile"); clear(); modify_user_mode( LOOKMSGS ); if( dashf(fname) ) { ansimore(fname,YEA); clear() } else { move(5,30);
prints("没有信息存在"); pressanykey(); } 这程序很精典,BBS常用的函数用到很多. move(5,30); ansimore()是显示一文件内容,这里fname保存的就是信息文件的全路径名. msgfile是放在用户HOME目录里的文件,里面保存的是用户收到过的信息. dashf(fname)是判断fname保存的路径的文件是否存在,如存在返回1. ======================================================================== BBS自己特有的函数还有很多很多,你可以多看看程序.我现在只能想起这些,还有 很多,以后用到时我再讲解一下吧.
-- ※ 来源:·梅陇客栈 bbs.ecust.edu.cn·[FROM: 211.144.72.160]

|