⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cx170.c

📁 170话费催交系统
💻 C
📖 第 1 页 / 共 5 页
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <setjmp.h>#include <signal.h>#include <varargs.h>#include <ctype.h>#include <time.h>#include <math.h>#include <mon.h>#include <assert.h>#include <errno.h>#include <srllib.h>#include <dxxxlib.h>#include <dtilib.h>#include "../include/menu.h"#include "../include/cxcj1.h"#include "../include/cxcj2.h"#include "../include/fox.h"#define MAXTERMS 9#define PH0 2147483648#define PH1 3220176896#define PH2 1048576#define DIGITS 7#define SECRET 6struct headdb  	dbhead;struct structdb 	fieldptr[128];FILE 	*fp;int	fieldnum, recordnum;char	recordptr[800];FILE 	*duse();FILE 	*duse1();void 	dclose();void 	gotorecord();double 	getsn();char 	*getsc();extern int  MAXLINE ;extern int  chnldev ;extern int  dtidev ;extern int  mychnl;extern char digch[] ;extern long rcdplc[] ;extern long rcdtim[] ;extern unsigned char fifobuf[];extern unsigned char dispbuf[];/*char *device[] = {   "dxxxB1C1", "dxxxB1C2", "dxxxB1C3", "dxxxB1C4",   "dxxxB2C1", "dxxxB2C2", "dxxxB2C3", "dxxxB2C4",   "dxxxB3C1", "dxxxB3C2", "dxxxB3C3", "dxxxB3C4",   "dxxxB4C1", "dxxxB4C2", "dxxxB4C3", "dxxxB4C4",   "dxxxB5C1", "dxxxB5C2", "dxxxB5C3", "dxxxB5C4",   "dxxxB6C1", "dxxxB6C2", "dxxxB6C3", "dxxxB6C4",   "dxxxB7C1", "dxxxB7C2", "dxxxB7C3", "dxxxB7C4",   "dxxxB8C1", "dxxxB8C2"} ;char *dti212[] = {   "/dev/dtiB1T1", "/dev/dtiB1T2", "/dev/dtiB1T3", "/dev/dtiB1T4",   "/dev/dtiB1T5", "/dev/dtiB1T6", "/dev/dtiB1T7", "/dev/dtiB1T8",   "/dev/dtiB1T9", "/dev/dtiB1T10", "/dev/dtiB1T11", "/dev/dtiB1T12",   "/dev/dtiB1T13", "/dev/dtiB1T14", "/dev/dtiB1T15",   "/dev/dtiB1T16", "/dev/dtiB1T17", "/dev/dtiB1T18", "/dev/dtiB1T19",   "/dev/dtiB1T20", "/dev/dtiB1T21", "/dev/dtiB1T22", "/dev/dtiB1T23",   "/dev/dtiB1T24", "/dev/dtiB1T25", "/dev/dtiB1T26", "/dev/dtiB1T27",   "/dev/dtiB1T28", "/dev/dtiB1T29", "/dev/dtiB1T30"} ;*/extern DL_MENU  * cur_menu;         /* Current active menu                 */extern DL_MENU  * pre_menu;         /* Previous menu                       */extern jmp_buf  idlestate;          /* Idle state reentry environment      */extern int      devhandle;          /* Device handle                       */extern char     devname[];        /* Buffer for the channel device name  *//* * Function declarations */void    custserv () ;void     goodby();                /* if you hit key error many times,system onhook */void     ltb_menu_engine () ;void     cuiqian () ;             /* test if you pay delay when you dial insystem  */int      rdsrt () ;               /* check if the telephone number hassecret code  */int      valphone () ;      /* if the phone number is valid */int      delayday () ;      /* the deviation of days from the day you oughtpay money */void     dqmx1122 () ;            /* the 'mingxi' according the date youindicated */void     dymx1125 () ;            /* the 'mingxi' according the month youindicated */void     srv_sct() ;              /* change the secret code */void     bgn() ;                  /* let input you telephone number andsecret code */void	*val_phn1();void	*val_phn2();void	*val_phn3();void     *val_secret() ;          /* check if the secret code you input isright */void     *val_date() ;            /* check if the date you input is valid*/void     *val_month() ;           /* check if the month you input is valid*/void     errnwsct() ;             /* tell client the new secret code heinput is invalid */extern void     plymny () ;              /* play a money string */void     bye_acnt () ;            /* exit the system because phone numberinput error many times */void     bye_date () ;            /* exit the system because date inputerror many times */void     bye_month () ;void     bye_scrt () ;void     bye_bye () ;void     startt () ;void     etime () ;long     binsrh () ;void     now_cost () ;void     lst_cost () ;void     mon_cost () ;void     yer_cost () ;void	 plyhth();void     now_fnhu () ;void     lst_fnhu () ;void     mon_fnhu () ;void     yer_fnhu () ;void     *val_cui () ;void     mxthmon () ;void     mxlsmon () ;void     gjqhdy () ;void     gjqhsy () ;void     gjqhdn () ;void     gjqhdq () ;void     gnqhdy () ;void     gnqhsy () ;void     gnqhdn () ;void     gnqhdq () ;void     dfhmdy () ;void     dfhmsy () ;void     dfhmdn () ;void     dfhmdq () ;void     ingjqh () ;void     ingnqh () ;void     inphone () ;void     *val_gjqh () ;void     *val_gnqh () ;void     *val_phone () ;void     bye_gjqh () ;void     bye_gnqh () ;void     bye_dfhm () ;void     paymoney () ;void     skidx13 () ;void	 skfd13 () ;long     skidx2 () ;long     skidx14 () ;long     skidx11 () ;double   skfd1 () ;void     skprot () ;unsigned long compl () ;unsigned long btreval () ;unsigned long skidx3 ();void     skfd3 () ;void     skidx10 () ;double   skfd10 () ;void     now_dgd () ;void     lst_dgd () ;void     mon_dgd () ;void     yer_dgd () ;void     skidx4 () ;void     skfd4 () ;void	 no168();void     now_168 () ;void     lst_168 () ;void     mon_168 () ;void     dmd_168 () ;int      skidx5 ();//int      skidx7 () ;void     skfd5 () ;void     skfd6 () ;void     skfd7 () ;void	 skfd15() ;void	 skfd16() ;void     now_myd () ;void     lst_myd () ;void     mon_myd () ;void     dmd_myd () ;void     now_mmyd () ;void     lst_mmyd () ;void     mon_mmyd () ;void     dmd_mmyd () ;void     skidx6 () ;void     skidx12 () ;void     skfd12 () ;void	 skidx15();void     qwer () ;void     newbtreval () ;int      cmprint () ;unsigned long tbas2 () ;extern void     abcd1 () ;extern void     abcd2 () ;extern void     abcd3 () ;extern void     abcd4 () ;extern void     dgd1 () ;extern void     dgd2 () ;extern void     dgd3 () ;extern void     dgd4 () ;extern void	gsm1 () ;extern void	gsm2 () ;extern void	gsm3 () ;extern void	gsm4 () ;extern void	now_myd () ;extern void	lst_myd () ;extern void	mon_myd () ;extern void	yer_myd () ;/* Default Termination Control Block (TPT) initialization. * * NOTE: the names 'def_rp_tpt' and 'def_dg_tpt' are known and assumed *       by the d4xtools.c routines. */DV_TPT def_rp_tpt[MAXTERMS] = {	{IO_CONT,DX_MAXDTMF,1,TF_MAXDTMF,0,0},	{IO_CONT,DX_MAXSIL,900,TF_MAXSIL,0,0},	{IO_CONT,DX_MAXNOSIL,800,TF_MAXNOSIL,0,0},	{IO_CONT,DX_LCOFF,1,TF_LCOFF,0,0},	{IO_CONT,DX_IDDTIME,0,TF_IDDTIME,0,0},	{IO_CONT,DX_MAXTIME,0,TF_MAXTIME,0,0},	{IO_CONT,DX_DIGMASK,0,TF_DIGMASK,0,0},	{IO_CONT,DX_PMOFF,4,2,3,0},	{IO_EOT,DX_PMON,4,2,3,0}};DV_TPT def_dg_tpt[MAXTERMS] = {	{IO_CONT,DX_MAXDTMF,0,TF_MAXDTMF,0,0},	{IO_CONT,DX_MAXSIL,900,TF_MAXSIL,0,0},	{IO_CONT,DX_MAXNOSIL,200,TF_MAXNOSIL,0,0},	{IO_CONT,DX_LCOFF,1,TF_LCOFF,0,0},	{IO_CONT,DX_IDDTIME,200,TF_IDDTIME,0,0},	{IO_CONT,DX_MAXTIME,0,TF_MAXTIME,0,0},	{IO_CONT,DX_DIGMASK,0,TF_DIGMASK,0,0},	{IO_CONT,DX_PMOFF,4,2,3,0},	{IO_EOT,DX_PMON,4,2,3,0}};/* Message Structure list for messages in PROMPT.VOX */DL_MSGS dl_cxcj1[] = {	{"0",P1_OFF00,P1_END00},	{"1",P1_OFF01,P1_END01},	{"2",P1_OFF02,P1_END02},	{"3",P1_OFF03,P1_END03},	{"4",P1_OFF04,P1_END04},	{"5",P1_OFF05,P1_END05},	{"6",P1_OFF06,P1_END06},	{"7",P1_OFF07,P1_END07},	{"8",P1_OFF08,P1_END08},	{"9",P1_OFF09,P1_END09},	{"10",P1_OFF10,P1_END10},	{"100",P1_OFF11,P1_END11},	{"1000",P1_OFF12,P1_END12},	{"10000",P1_OFF13,P1_END13},	{"100000000",P1_OFF14,P1_END14},	{"fen",P1_OFF15,P1_END15},	{"jiao",P1_OFF16,P1_END16},	{"yuan",P1_OFF17,P1_END17},	{"dian",P1_OFF18,P1_END18},	{"qian",P1_OFF19,P1_END19},	{"datano1",P1_OFF20,P1_END20},	{"month1",P2_OFF01,P2_END01},	{"month2",P2_OFF02,P2_END02},	{"month3",P2_OFF03,P2_END03},	{"month4",P2_OFF04,P2_END04},	{"month5",P2_OFF05,P2_END05},	{"month6",P2_OFF06,P2_END06},	{"month7",P2_OFF07,P2_END07},	{"month8",P2_OFF08,P2_END08},	{"month9",P2_OFF09,P2_END09},	{"month10",P2_OFF10,P2_END10},	{"month11",P2_OFF11,P2_END11},	{"month12",P2_OFF12,P2_END12},	{"th1",P2_OFF13,P2_END13},	{"th2",P2_OFF14,P2_END14},	{"th3",P2_OFF15,P2_END15},	{"th4",P2_OFF16,P2_END16},	{"th5",P2_OFF17,P2_END17},	{"th6",P2_OFF18,P2_END18},	{"th7",P2_OFF19,P2_END19},	{"th8",P2_OFF20,P2_END20},	{"th9",P2_OFF21,P2_END21},	{"th10",P2_OFF22,P2_END22},	{"th11",P2_OFF23,P2_END23},	{"th12",P2_OFF24,P2_END24},	{"th13",P2_OFF25,P2_END25},	{"th14",P2_OFF26,P2_END26},	{"th15",P2_OFF27,P2_END27},	{"th16",P2_OFF28,P2_END28},	{"th17",P2_OFF29,P2_END29},	{"th18",P2_OFF30,P2_END30},	{"th19",P2_OFF31,P2_END31},	{"th20",P2_OFF32,P2_END32},	{"th21",P2_OFF33,P2_END33},	{"th22",P2_OFF34,P2_END34},	{"th23",P2_OFF35,P2_END35},	{"th24",P2_OFF36,P2_END36},	{"th25",P2_OFF37,P2_END37},	{"th26",P2_OFF38,P2_END38},	{"th27",P2_OFF39,P2_END39},	{"th28",P2_OFF40,P2_END40},	{"th29",P2_OFF41,P2_END41},	{"th30",P2_OFF42,P2_END42},	{"th31",P2_OFF43,P2_END43},	{"yr90",P2_OFF44,P2_END44},	{"yr91",P2_OFF45,P2_END45},	{"yr92",P2_OFF46,P2_END46},	{"yr93",P2_OFF47,P2_END47},	{"yr94",P2_OFF48,P2_END48},	{"yr95",P2_OFF49,P2_END49},	{"yr96",P2_OFF50,P2_END50},	{"yr97",P2_OFF51,P2_END51},	{"yr98",P2_OFF52,P2_END52},	{"yr99",P2_OFF53,P2_END53},	{"yr00",P2_OFF54,P2_END54},	{"yr01",P2_OFF55,P2_END55},	{"yr02",P2_OFF56,P2_END56},	{"yr03",P2_OFF57,P2_END57},	{"yr04",P2_OFF58,P2_END58},	{"yr05",P2_OFF59,P2_END59},	{"yr06",P2_OFF60,P2_END60},	{"nn", 0, 80},	{"errhaoma", P3_OFF01, P3_END01},	{"mlterrhao", P3_OFF02, P3_END02},	{"mima", P3_OFF03, P3_END03},	{"errmima", P3_OFF04, P3_END04},	{"mlterrmima", P3_OFF05, P3_END05},	{"bm_menu1122", P3_OFF06, P3_END06},	{"sumcost", P3_OFF08, P3_END08},	{"gjchcost", P3_OFF10, P3_END10},	{"gnchcost", P3_OFF11, P3_END11},	{"shcost", P3_OFF12, P3_END12},	{"calltime", P3_OFF13, P3_END13},	{"tophone", P3_OFF14, P3_END14},	{"rentpermth", P3_OFF15, P3_END15},	{"sumqian", P3_OFF16, P3_END16},	{"payfast", P3_OFF17, P3_END17},	{"zinajin", P3_OFF18, P3_END18},	{"slctkey", P3_OFF19, P3_END19},	{"keyerr", P3_OFF20, P3_END20},	{"mltkyerr", P3_OFF21, P3_END21},	{"nwsctin", P3_OFF22, P3_END22},	{"nwscterr", P3_OFF23, P3_END23},	{"nwsctmlterr", P3_OFF24, P3_END24},	{"rptnwsct", P3_OFF25, P3_END25},	{"sctcmp", P3_OFF26, P3_END26},	{"datein", P3_OFF27, P3_END27},	{"dterr", P3_OFF28, P3_END28},	{"qianfei", P4_OFF01, P4_END01},	{"qianjiao", P4_OFF01, 2161},	{"sumqianfei", P4_OFF02, P4_END02},	{"bm_menu1121", P4_OFF03, P4_END03},	{"datadel", P4_OFF04, P4_END04},	{"mltdterr", P4_OFF05, P4_END05},	{"monin", P4_OFF06, P4_END06},	{"monerr", P4_OFF07, P4_END07},	{"mltmonerr", P4_OFF08, P4_END08},	{"gjdqhin", P4_OFF09, P4_END09},	{"errgjdqh", P4_OFF10, P4_END10},	{"mlterrgjdqh", P4_OFF11, P4_END11},	{"gnqhin", P4_OFF12, P4_END12},	{"errgnqh", P4_OFF13, P4_END13},	{"mlterrgnqh", P4_OFF14, P4_END14},	{"dfhmin", P4_OFF15, P4_END15},	{"errdfhm", P4_OFF16, P4_END16},	{"mlterrdfhm", P4_OFF17, P4_END17},	{"nophoneto", P4_OFF18, P4_END18},//	{"f168", P4_OFF19, P4_END19},        {"f168", PXINXI,PXINX1},	{"f113", P4_OFF20, P4_END20},	{"cthuafei", P4_OFF21, P4_END21},	{"dbfei", P4_OFF22, P4_END22},	{"qitafei", P4_OFF23, P4_END23},	{"calledno", P4_OFF24, P4_END24},	{"bm_menu113", P5_OFF01, P5_END01},	{"gjzw", P5_OFF02, P5_END02},	{"gazw", P5_OFF03, P5_END03},	{"twzw", P5_OFF04, P5_END04},	{"gnzw", P5_OFF05, P5_END05},	{"shzw", P5_OFF06, P5_END06},	{"gjf", P5_OFF07, P5_END07},	{"gaf", P5_OFF08, P5_END08},	{"twf", P5_OFF09, P5_END09},	{"gnf", P5_OFF10, P5_END10},	{"shf", P5_OFF11, P5_END11},	{"fdf", P5_OFF12, P5_END12},	{"cjf", P5_OFF13, P5_END13},	{"syf", P5_OFF14, P5_END14},	{"qtf", P5_OFF15, P5_END15},	{"ljqf", P5_OFF16, P5_END16},	{"hjf", P5_OFF17, P5_END17},	{"myzw", P5_OFF18, P5_END18},	{"myf", P5_OFF19, P5_END19},	{"hm168", P5_OFF20, P5_END20},	{"telefei", P5_OFF21, P5_END21},	{"dhhmis", P5_OFF22,P5_END22},	{"noctu", P5_OFF23,P5_END23},	{"no168", P5_OFF24,P5_END24},	{"huchu", P5_OFF25,P5_END25},	{"huru", P5_OFF26,P5_END26},	{"bypayed", P5_OFF27,P5_END27},	{"bynotpay", P5_OFF28, P5_END28},	{"datenoctu", P5_OFF29, P5_END29},	{"dateno168", P5_OFF30, P5_END30},	{"bm_menu1", P6_OFF01, P6_END01},	{"sl_menu1", P6_OFF02, P6_END02},	{"sl_menu2", P6_OFF03, P6_END03},	{"cthr", P6_OFF04, P6_END04},	{"nomyf", P6_OFF05, P6_END05},	{"thdd", P6_OFF06, P6_END06},	{"bottom", P6_OFF07, P6_END07},	{"hth", P6_OFF08, P6_END08},	{"dwdhf", P6_OFF09, P6_END09},	{"xtnihao", P6_OFF10, P6_END10},	{"yddhf", P6_OFF11, P6_END11},	{"maincall", P6_OFF12, P6_END12},	{"frommonth", P6_OFF13, P6_END13},	{"thismonth", P6_OFF14, P6_END14},	{"sumdue", P6_OFF15, P6_END15},	{"payedout", P6_OFF16, P6_END16},	{"noznj", P6_OFF17, P6_END17},	{"ctzs", P6_OFF18, P6_END18},	{"tbdhhm", P6_OFF19,P6_END19},	{"notchgsct", P6_OFF20, P6_END20},	{"nin", P6_OFF21, P6_END21},	{"duepay", P6_OFF22, P6_END22},	{"byyj", P6_OFF23, P6_END23},	{"syyj", P6_OFF24, P6_END24},	{"waiting", P6_OFF25, P6_END25},	{"unit", P9_OFF01, P9_END01},	{"d8250224", P9_OFF02, P9_END02},	{"bynomy", P9_OFF03, P9_END03},	{"gynomy", P9_OFF04, P9_END04},	{"greeting", P9_OFF10, P9_END10},	{"dial170", P9_OFF11, P9_END11},	{"xtjs", PM_OFF01, PM_END01},	{"", 0, 0}};DL_MSGS dl_cxcj2[] = {	{"iypt", PN_OFF50, PN_END50},	{"yypt", PN_OFF51, PN_END51},	{"xtpt", PN_OFF52, PN_END52},	{"nypt", PN_OFF53, PN_END53},	{"sypt", PN_OFF54, PN_END54},	{"numis", PN_OFF55, PN_END55},	{"yesno", PN_OFF56, PN_END56},	{"bm_menu1", PN_OFF57, PN_END57},	{"ratemenu", PN_OFF58, PN_END58},	{"dddidd", PN_OFF59, PN_END59},	{"indfhm", PN_OFF60, PN_END60},	{"endmark", PN_OFF61, PN_END61},	{"zonetollall", PN_OFF62, PN_END62},	{"zonetollrmall", PN_OFF63, PN_END63},	{"oneper", PN_OFF64, PN_END64},	{"nofaxyet", PN_OFF65, PN_END65},	{"callbpcnt", PN_OFF66, PN_END66},	{"callbpfee", PN_OFF67, PN_END67},	{"localrate", PN_OFF68, PN_END68},	{"localxtra", PN_OFF69, PN_END69},	{"zonerate", PN_OFF70, PN_END70},	{"xtra4020", PN_OFF71, PN_END71},	{"zonenohalf", PN_OFF72, PN_END72},	{"here2area", PN_OFF73, PN_END73},	{"feepermin", PN_OFF74, PN_END74},	{"nighthalf", PN_OFF75, PN_END75},	{"here2code", PN_OFF76, PN_END76},	{"iddnohalf", PN_OFF77, PN_END77},	{"mobilrate", PN_OFF78, PN_END78},	{"xtra20", PN_OFF79, PN_END79},	{"roamrate", PN_OFF80, PN_END80},	{"rmxtra20", PN_OFF81, PN_END81},	{"rmtollfee", PN_OFF82, PN_END82},	{"gramrate", PN_OFF83, PN_END83},	{"gramcheck", PN_OFF84, PN_END84},	{"extra40", PN_OFF85, PN_END85},	{"urgent", PN_OFF86, PN_END86},	{"zonetoll", PN_OFF87, PN_END87},	{"zonetollrm", PN_OFF88, PN_END88},	{"setpass", PN_OFF89, PN_END89},//      {"yddhf", PN_OFF90, PN_END90},	{"bbfee", PN_OFF91, PN_END91},	{"rgnhf", PN_OFF92, PN_END92},	{"gnqhin", PN_OFF93, PN_END93},	{"gjdqhin", PN_OFF94, PN_END94},	{"dfhmin", PN_OFF95, PN_END95},	{"monin", PN_OFF96, PN_END96},	{"datein", PN_OFF97, PN_END97},	{"yuelow", PN_OFF98, PN_END98},	{"depositfast", PN_OFF99, PN_END99},	{"phonefee", PN_OFF100, PN_END100},	{"yue", PN_OFF101, PN_END101},	{"yuenopay", PN_OFF102, PN_END102},	{"xtra30", PN_OFF103, PN_END103},	{"payfee", PN_OFF104, PN_END104},	{"", NULL, NULL}};/* * Message Table Array - This is an array of Message Tables. The physical * order of the tables will dictate the order that gt_iott() will search * for a given "message". NOTE: the name 'dl_msgtbl' is known and assumed * by the d4xtools.c routines. */DL_MSGTBL dl_msgtbl[] = {	{dl_cxcj1, "../vox/cxcj1.vox", -1, IO_DEV},	{dl_cxcj2, "../vox/cxcj2.vox", -1, IO_DEV},	{NULL,NULL,-1,NULL}};/* Introductory message pointer - used when line first goes off-hook */char     routnm[20] ;   /* for find the place where error occured */int      numptr ;DL_MENU  *ptrbuf [10] ;char 	 phonenum1[16];char     phonenum[16] ;char     longphone[16] ;int      strint [10] ;char     secret[16] ;char     strtime[20] ;char     endtime[20] ;char     gjh[8] ;char     gnh[8] ;char     dfhm[18] ;char     proto[16] ;int      pppflg ;int      glb1 ;        /* used in srv_sct to repeat to play msg    */int      gsmbill;unsigned long lgphone ;unsigned long ulphnum ;unsigned long ulpronum ;int	dignum;int	gsmcall;/*******************************************************************************************************************************************************                       Application Menu Definitions****  The following tables define the menus and prompts and appropriate**  actions for the application. Each menu consists of two structures.**  The DL_MENU structure contains a pointer to this menu's option table,**  response processing routine and message names to be used. The option**  table contains the response key, an optional pointer to a function to**  perform, and another menu to execute. This table is terminated by a**  NULL entry.*******************************************************************************************************************************************************/DL_DATA data_1 = {	1,                      /* Read only 1 digit                */	100,                    /* Allow 15 seconds for entering it */	NULL,                   /* No terminating digits needed     */	3                       /* Allow 3 retries for entry        */};/* The last menu MENU BOTTOM */DL_MNUOPTS menubottom_opts[] = {	{"7",NULL,NULL},	{"8",NULL,NULL},	{"9",NULL,NULL},	{"*",bye_bye,NULL},	{NULL,NULL,NULL}};DL_MENU menu_bottom = {	menubottom_opts,	DM_CURR,	val_menu,	"bottom",	"keyerr",	goodby,	&data_1};/* Menu 1112 */DL_MNUOPTS menu1112_opts[] = {	{"1",now_fnhu, &menu_bottom},	{"2",lst_fnhu, &menu_bottom},	{"3",mon_fnhu, &menu_bottom},	{"4",yer_fnhu, &menu_bottom},	{"7",NULL,NULL},	{"8",NULL,NULL},	{"9",NULL,NULL},	{"*",bye_bye,NULL},	{NULL,NULL,NULL}};DL_MENU menu_1112 = {	menu1112_opts,         	DM_CURR,             	val_menu,           	"bm_menu1122",     	"keyerr",        	goodby,       	&data_1      };/* Menu 1121 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -