- 论坛徽章:
- 0
|
static int strfunc(char *str, int mode, int c1, int c2)
{
int ret;
char *pt;
int cnt;
int from, to;
if(str == NULL){
return(-1);
}
if(strlen(str) == 0){
return(0);
}
for(pt = str, cnt = 0 ; *pt != '\0' ; ){
ret = mbtowc((wchar_t *)0, pt, MB_CUR_MAX);
if(ret < 0){
break;
}
if(ret == 1){
from = (int)*pt;
if(mode == 1){
to = toupper(from);
}else if(mode == 2){
to = tolower(from);
}else if(mode == 3){
if(from == c1){
to = c2;
}else{
to = from;
}
}else{
to = from;
}
if(from != to){
cnt ++;
*pt = (char)to;
}
}
pt += ret;
}
if(*pt != '\0'){
return(-1);
}else{
return(cnt);
}
} /* strfunc() */
mode:
1:小写变大写
2:大写变小写
3:c2变c1
给分,谢谢! |
|