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

📄 util.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 4 页
字号:
}/* *   侬  毛int卞  晶[ * */int numstrIsKanji( char *str );int decimalstrToInt( char *str );int kanjistrToInt( char *str );int textToInt( char *str ){    char numstr[256];    if( !findNumberString(str,numstr,sizeof(numstr)) ) return 0;    if( numstrIsKanji(numstr) ) return kanjistrToInt(numstr);    else return decimalstrToInt(numstr);}/* * 醒袄毛  允  侬  互}    贿挚卅及井壑钗挚卅及井毛     * 娄醒     允月  侬  [醒侬毛  允  侬  动陆反殖氏匹反中仃卅中[ * 忒曰袄     贿挚卅日ㄠ}壑钗挚卅日ㄟ *    str 互"一亿四千万。"及午五{忒曰袄1 *    str 互"123"及午五{忒曰袄ㄟ * */int numstrIsKanji( char *str ){    int i,j;    char tmp[3];    for( i=0;str[i]!='\0';i++ ){        if( str[i] & 0x80 ){            tmp[0] = str[i];            tmp[1] = str[i+1];            tmp[2] = '\0';            i++;        }else{            tmp[0] = str[i];            tmp[1] = '\0';        }        for( j=0;j<FIGURECHARNUM;j++ ){            if( strstr(UTIL_figurechar[j],tmp) ){                return 1;            }        }        for( j=0;j<SPECIALCHARNUM;j++ ){            if( strstr(UTIL_specialchar[j],tmp) ){                return 1;            }        }    }    return 0;}/* * 蜗褡芊匹醒袄毛  仄凶  侬  毛int卞  晶 * char *str   侬   * 忒曰袄   侬  互  允醒袄 */int decimalstrToInt( char *str ){    double val;    char tmp[3];    int i,j;    val = 0;    for( i=0;str[i]!='\0';i++ ){        if( str[i] & 0x80 ){            tmp[0] = str[i];            tmp[1] = str[i+1];            tmp[2] = '\0';            i++;        }else{            tmp[0] = str[i];            tmp[1] = '\0';        }        for( j=0;j<DECIMALCHARNUM;j++ ){            if( strstr(UTIL_decimalchar[j],tmp) ){                val = val*10+j;            }        }    }    if( val > 0x7fffffff ) return 0x7fffffff;    else     return (int)val;}/* *     挚匹  仄凶醒袄毛帮醒卞  晶 * char *str 醒袄毛  允  侬   * 忒曰袄 醒袄 *    * str互"一亿4千万?"及午五忒曰袄 140000000 */int kanjistrToInt( char *str ){    double val,tmpval;    char tmp[3];    int num,i,j,numflag;    numflag = 0;    num = 1;    tmpval = 0;    val = 0;    for( i=0;str[i]!='\0';i++ ){        if( str[i] & 0x80 ){            tmp[0] = str[i];            tmp[1] = str[i+1];            tmp[2] = '\0';            i++;        }else{            tmp[0] = str[i];            tmp[1] = '\0';        }        for( j=0;j<SPECIALCHARNUM;j++ ){            if( strstr(UTIL_specialchar[j],tmp ) ){                if( numflag == 1 ) tmpval += num;                if( j == 0 ) val += tmpval*10000;                else if( j == 1 ) val += tmpval*100000000;                num = 1;                numflag = 0;                tmpval = 0;                goto nextchar;            }        }        for( j=0;j<FIGURECHARNUM;j++ ){            if( strstr(UTIL_figurechar[j],tmp) ){                if( j == 0 ) tmpval += num*10;                else if( j == 1 ) tmpval += num*100;                else if( j == 2 ) tmpval += num*1000;                num = 1;                numflag = 0;                goto nextchar;            }        }        for( j=0;j<DECIMALCHARNUM;j++ ){            if( strstr(UTIL_decimalchar[j],tmp) ){                num = j;                numflag = 1;                goto nextchar;            }        }nextchar:		continue;    }    if( numflag == 1 ) tmpval += num;    val += tmpval;    if( val > 0x7fffffff ) return 0x7fffffff;    else     return (int)val;}/*---------------------------------------- *   侬  及    卞踏井木化中月帮醒毛必永玄允月[ * NPC及  平旦玄荸  卞支仁分勾[ * 凶分仄    卞中日氏  侬互丐月桦宁  骰允月[ * 耨痊互  切卅中失伙打伉术丞卞  凳[ * 娄醒 *  hoge    char*   荸  允月  侬   * 忒曰袄 *  荸  仄凶帮醒[ * *   “ * "ringo ( 吧噗吧噗星人 ) : 100" *      及桦宁反100互井尹月[ * "ringo ( 吧噗吧噗星人 ) : 是100" *      手100卞卅月[幻氏引卞NPC迕卅曰友[ ----------------------------------------*/int texttoiTail( char *hoge){    return 0; /* 壬什匀化凶及匹仇丹仄凶[公及丹切楮醒仍午壅允[ */#if 0    int len = strlen(hoge);    if( len == 0 )return atoi(hoge);    /*    井日茧仄化  赓卞醒侬毛苇勾仃月    */    while(--len && len >= 0){        if( isdigit(hoge[len]) )            break;    }    while( --len && len >= 0 ){        if( !isdigit(hoge[len]) )            break;        if( hoge[len]=='+' || hoge[len]=='-')            break;    }    return atoi(hoge+len+1);#endif#if 0    int f = 0;    for(i=len-1;i>=0;i--){        if( isdigit( hoge[i] ) ) f = 1;        if( (f == 1)            && !( isdigit(hoge[i]) || hoge[i]=='+' || hoge[i]=='-') ){            return atoi( hoge + i + 1 );        }    }    return atoi(hoge);#endif}/*---------------------------------------- *   侬  毛醒侬井升丹井民尼永弁仄化}醒侬分匀凶日 *  娄醒卞  木化忒允 * 娄醒 *      arg               晶葭 *      number            晶  毛医  允月赭 *      base            湘醒 *      type            娄醒及滇( CTYPE 反 common.h 卞烛蜕今木化中月 ) * 忒曰袄 *      TRUE(1)    岳   *      FALSE(0)   strtol互敦僬卞反岳  仄卅井匀凶 *                  仇及凛及number反strtol及忒曰袄匹丐月 ----------------------------------------*/BOOL strtolchecknum( char* arg , void* number,int base ,CTYPE type){    char* buf;    int     num;    num = strtol( arg, &buf, base);    switch( type ){    case CHAR:        *(char*)number = (char)num;        break;    case SHORT:        *(short*)number = (short)num;        break;    case INT:        *(int*)number = num;        break;    case DOUBLE:        *(double*)number = (double)num;        break;    default:        break;    }    if( strlen( buf ) >= 1 )        /*         * 酸曰  侬互丐月午中丹仪反  晶仄五木化卅中午中丹仪卅及分[         */        return FALSE;    return TRUE;}/*---------------------------------------- * src 井日 dels 匹隙烂仄凶  侬毛潸曰轮仁 * 田永弁旦仿永扑亘反巨旦弗□皿匹丐月仪卞镗啦[ * 勾引曰田永弁旦仿永扑亘反绰轮匹五卅中[ * 娄醒 *  src      凳今木月  侬   *  char*  绰轮允月  侬(  侬  匹隙烂第) * 忒曰袄 *  卅仄 ----------------------------------------*/void deleteCharFromString( char* src , char* dels ){    int index=0;    /* 匹五丐互曰及  侬  匹及 index */    int delength;   /* dels 及赢今毛涩烂允月(剂仄反簧蘸失永皿及啃 */    int i=0,j;/* i 反 src 毛伙□皿允月  醒 j 反 dels 毛伙□皿允月  醒 */    delength= strlen( dels );    while( src[i] != '\0' ){        if( src[i] == BACKSLASH  )            /*             * 田永弁旦仿永扑亘卅及匹巨旦弗□皿允月             * 勾引曰戚及  侬反  椭瘀卞啖  允月             */            src[index++] = src[++i];         /* substitute next char */        else{            for( j = 0 ; j < delength ; j ++ ){                if( src[i] == dels[j] )                    /*                     * 绰轮允月  侬分[方匀化 i 卞 1 毛凶允                     */                    goto incrementi;            }            /*             * 壅允  卞隙烂今木化中卅中及匹戊疋□允月[             */            src[index++] =  src[i];        }    incrementi:        i++;    }    src[index] = '\0';}/*---------------------------------------- * src 井日 dels 匹隙烂仄凶  侬毛潸曰轮仁 * 巨旦弗□皿反卅中 * 娄醒 *  src      凳今木月  侬   *  char*  绰轮允月  侬(  侬  匹隙烂第) * 忒曰袄 *  卅仄 ----------------------------------------*/void deleteCharFromStringNoEscape( char* src , char* dels ){    int index=0;    /* 匹五丐互曰及  侬  匹及 index */    int delength;   /* dels 及赢今毛涩烂允月(剂仄反簧蘸失永皿及啃 */    int i=0,j;/* i 反 src 毛伙□皿允月  醒 j 反 dels 毛伙□皿允月  醒 */    delength= strlen( dels );    while( src[i] != '\0' ){        for( j = 0 ; j < delength ; j ++ ){            if( src[i] == dels[j] )                /*                 * 绰轮允月  侬分[方匀化 i 卞 1 毛凶允                 */                goto incrementi;        }        /*         * 壅允  卞隙烂今木化中卅中及匹戊疋□允月[         */        src[index++] =  src[i];    incrementi:        i++;    }    src[index] = '\0';}/*------------------------------------------------------------ * 隙烂今木凶  侬毛隙烂今木凶  侬匹  五井尹月 * 娄醒 *  src     char*         凳今木月  侬   *  oldc    char          凳今木月  侬 *  newc    char          凳允月  侬 * 忒曰袄 *  src ------------------------------------------------------------*/char*   replaceString( char* src, char oldc ,char newc ){    char*   cp=src;    do{        if( *cp == oldc ) *cp=newc;    }while( *cp++ );    return src;}typedef struct tagEscapeChar{    char     escapechar;    char     escapedchar;}EscapeChar;static EscapeChar   escapeChar[]={    { '\n',   'n' },    { ',',    'c' },    { '|',    'z' },    { '\\',   'y' },};char makeCharFromEscaped( char c )//add this function,because the second had it{        int i;                for( i = 0; i < sizeof( escapeChar )/sizeof( escapeChar[0] ); i++ )        {            if( escapeChar[i].escapedchar == c )            {               c = escapeChar[i].escapechar;               break;            }        }        return c;}/*---------------------------------------- * makeEscapeString匹综岳今木凶  侬  毛葭卞  允 * 娄醒 *  src             char*       葭卞卅月  侬  [仇木互踏五赘月[ * 忒曰袄 *  src    毛忒允[(楮醒毛  木仇卞仄支允中方丹卞) ----------------------------------------*/char   *makeStringFromEscaped( char* src ){//ttom this function all change,beside copy from the second    int     i;    // CoolFish: Fix bug 2001/10/13    // int     srclen = strlen( src );    int	    srclen = 0;    int     searchindex=0;        // CoolFish: Fix bug 2001/10/13    if (!src)	return	NULL;    srclen = strlen(src);        for( i = 0; i < srclen; i ++ )    {    // for 2Byte Word    if( IS_2BYTEWORD( src[i] ) ){        src[searchindex++] = src[i++];        src[searchindex++] = src[i];    }else            if( src[i] == '\\' )            {	                // 戚及  侬卞垫仁                i++;                src[searchindex++] = makeCharFromEscaped( src[i] );            }            else            {                src[searchindex++] = src[i];            }    }                    src[searchindex] = '\0';                    return src;}char*  makeEscapeString( char* src , char* dest, int sizeofdest)

⌨️ 快捷键说明

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