/將字串中的小寫字母轉換為大寫
//str:要轉換的字串
//len:字串長度
void
lowertocap
(u8 *str,u8 len)
}
//對比字串str1和str2
//*str1:字串1指標
//*str2:字串2指標
//返回值:0,相等;1,不相等;
u8 usmart_strcmp
(u8 *str1,u8 *str2)
return0;
//兩個字串相等
}
//把str1的內容copy到str2
//*str1:字串1指標
//*str2:字串2指標
void
usmart_strcopy
(u8*str1,u8 *str2)
}
//得到字串的長度(位元組)
//*str:字串指標
//返回值:字串的長度
u8 usmart_strlen
(u8*str)
return len;
}
//m^n函式
//返回值:m^n次方
u32 usmart_pow
(u8 m,u8 n)
//把字串轉為數字
//支援16進製制轉換,但是16進製制字母必須是大寫的,且格式為以0x開頭的.
//不支援負數
//*str:數字字串指標
//*res:轉換完的結果存放位址.
//返回值:0,成功轉換完成.其他,錯誤**.
//1,資料格式錯誤.2,16進製制位數為0.3,起始格式錯誤.4,十進位制位數為0.
u8 usmart_str2num
(u8*str,u32 *res)
elseif(
*p==
'\0'
)break
;//碰到結束符,退出.
else
return1;
//不全是十進位制或者16進製制資料.
p++;}
p=str;
//重新定位到字串開始的位址.
if(hexdec==16)
//16進製制資料
else
return3;
//起始頭的格式不對
}else
if(bnum==0)
return4;
//位數為0,直接退出.
while(1
)return0;
//成功轉換
}
//得到指令名
//*str:源字串
//*cmdname:指令名
//*nlen:指令名長度
//maxlen:最大長度(做限制,指令不可能太長的)
//返回值:0,成功;其他,失敗.
u8 usmart_get_cmdname
(u8*str,u8*cmdname,u8 *nlen,u8 maxlen)
*cmdname=
'\0'
;//加入結束符
return0;
//正常返回
}
//獲取下乙個字元(當中間有很多空格的時候,此函式直接忽略空格,找到空格之後的第乙個字元)
//str:字串指標
//返回值:下乙個字元
u8 usmart_search_nextc
(u8* str)
//從str中得到函式名
//*str:源字串指標
//*fname:獲取到的函式名字指標
//*pnum:函式的引數個數
//*rval:是否需要顯示返回值(0,不需要;1,需要)
//返回值:0,成功;其他,錯誤**.
u8 usmart_get_fname
(u8*str,u8*fname,u8 *pnum,u8 *rval)
else
if(pcnt==
0x85
)break
; strtemp++;}
if(pcnt)
//接收完了
res=0;
strtemp=str;
while
(*strtemp!=
'('&&
*strtemp!=
'\0'
)//此**找到函式名的真正起始位置
} strtemp=str;
if(offset)strtemp+=offset+1;
//跳到函式名開始的地方
res=0;
nchar=0;
//是否正在字串裡面的標誌,0,不在字串;1,在字串;
while(1
)elseif(
*strtemp==
'('&&nchar==
0)fover++
;//括號深度增加一級
elseif(
*strtemp==
')'&&nchar==0)
elseif(
*strtemp==
'"')nchar=
!nchar;
if(fover==0)
//函式名還沒接收完
}else
//已經接受完了函式名了.
elseif(
*strtemp!=
' '&&
*strtemp!=
'(')
temp++
;//得到有效引數(非空格)}if
(fover==
1&&temp==2)
} strtemp++;}
if(parmnum==1)
//只有1個引數.
*pnum=parmnum;
//記錄引數個數
*fname=
'\0'
;//加入結束符
return res;
//返回執行結果
}
//從str中得到乙個函式的引數
//*str:源字串指標
//*fparm:引數字串指標
//*ptype:引數型別 0,數字;1,字串;0xff,引數錯誤
//返回值:0,已經無引數了;其他,下乙個引數的偏移量.
u8 usmart_get_aparm
(u8 *str,u8 *fparm,u8 *ptype)
elseif(
*str==
'"')
//找到字串的開始標誌
elseif(
*str!=
' '&&
*str!=
',')
//發現非法字元,引數錯誤
}else
//string類
*fparm=
*str;
//小寫或者數字保持不變
fparm++;}
} i++
;//偏移量增加
str++;}
*fparm=
'\0'
;//加入結束符
*ptype=type;
//返回引數型別
return i;
//返回引數長度
}
//得到指定引數的起始位址
//num:第num個引數,範圍0~9.
//返回值:該引數的起始位址
u8 usmart_get_parmpos
(u8 num)
//從str中得到函式引數
//str:源字串;
//parn:引數的多少.0表示無引數 void型別
//返回值:0,成功;其他,錯誤**.
u8 usmart_get_fparam
(u8*str,u8 *parn)
str++
;//偏移到"("之後的第乙個位元組
while(1
)break
;case1:
//字串
len=
usmart_strlen
(tstr)+1
;//包含了結束符'\0'
usmart_strcopy
(tstr,
&usmart_dev.parm[
usmart_get_parmpos
(n)]);
//拷貝tstr資料到usmart_dev.parm[n]
usmart_dev.parmtype|=
1/標記字串
usmart_dev.plentbl[n]
=len;
//該引數的長度為len
n++;if
(n>max_parm)
return usmart_parmover;
//引數太多
break
;case
0xff
://錯誤
return usmart_parmerr;
//引數錯誤 }if
(*str==
')'||
*str==
'\0'
)break
;//查到結束標誌了.
}*parn=n;
//記錄引數的個數
return usmart_ok;
//正確得到了引數
}
Oracle幾個字串函式
平常我們用oracle主要有兩種字串型別 1 char始終為固定的長度,如果設定了長度小於char列的值,則oracle會自動用空格填充的。當比較char時,oracle用空格將其填充為等長,再進行比較 2 varchar2資料型別為可變長度,雖然與varchar資料型別是同義的,但在今後的orac...
strcpy memcpy幾個字串函式的完美版
strcpy函式 char strcpy char strdest,const char strsrc memcpy函式 void memcpy void pvto,void pvform,size t size assert pvto null pvfrom null assert pbto pv...
python中的幾個字串處理函式
功能 將字串str當成有效的表示式來求值並返回計算結果。語法 eval source globals locals value 引數 例子 1可以把list,tuple,dict和string相互轉化。2 3 字串轉換成列表 4 a 1,2 3,4 5,6 7,8 9,0 5 type a 6 7 ...