📄 util.c
字号:
}/* * 侬 毛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 + -