C的一些共通函数 1

/****************************************************************************/
///
/// 機能     : 数字の判断 
///
/// 返り値   : RETOK (正常)数字
///            RETNG (異常)数字以外
///
/// 機能説明 : 数字の判断
///            
///
/// 備考     : 
///
/****************************************************************************/
int IsNum(char *pszStr) {
int inLength = strlen( pszStr );
int inLoopCnt = 0;
int inRtn = 0;
if ( inLength == 0 ) {
inRtn = RETNG;
}
for ( inLoopCnt; inLoopCnt<inLength; inLoopCnt++ ) {
//if ( pszStr[inLoopCnt] == ' ' ) {
// continue;
//}
if ( pszStr[inLoopCnt] >= '0' && pszStr[inLoopCnt] <= '9' ) {
inRtn = RETOK;
} else {
inRtn = RETNG;
break;
}
}
return inRtn;
}
/****************************************************************************/
///
/// 機能     : 字符集が半角文字の判断
///
/// 返り値   : RETOK (正常)全部が半角文字
///          : RETNG (異常)半角文字以外を含む
///
/// 機能説明 : 字符集が半角文字の判断
///            
///
/// 備考     : 
///
/****************************************************************************/
int HalfCharCheck(char *pszStr)
{
int  inLenStr = strlen(pszStr);
int  i = 0;
for(i = 0;i<inLenStr;++i){
if( IsZenkaku((unsigned char)pszStr[i]) ) {
//printf("××× 全角 ××× 位置=[%d]/n",i);
++i; // 全角なので読む位置を進める
return RETNG;
}
else{
//printf("○○○ 半角 ○○○ 位置=[%d]/n",i);
}
}
return RETOK;
}
/****************************************************************************/
///
/// 機能     : 字符集が全角文字の判断
///
/// 返り値   : RETOK (正常)全部が全角文字
///          : RETNG (異常)全角文字以外を含む
///
/// 機能説明 : 字符集が全角文字の判断
///            
///
/// 備考     : 
///
/****************************************************************************/
int FullCharCheck(char *pszStr)
{
int  inLenStr = strlen(pszStr);
int  i = 0;
for(i = 0;i<inLenStr;++i){
if( IsZenkaku((unsigned char)pszStr[i]) ) {
//printf("○○○ 全角 ○○○ 位置=[%d]/n",i);
++i; // 全角なので読む位置を進める
}
else{
//printf("XXX 半角 XXX 位置=[%d]/n",i);
return RETNG;
}
}
return RETOK;
}
/****************************************************************************/
///
/// 機能     : 字符のコードを返す
///
/// 返り値   : RETOK (正常)字符のコード
///          : RETNG (異常)字符のコード以外を含む
///
/// 機能説明 : 字符集が全角のコードを返す
///            
///
/// 備考     : 
///
/****************************************************************************/
int IsZenkaku(unsigned char c)
{
return (((c >= 0x81) && (c <= 0x9f)) || ((c >= 0xe0) && (c <= 0xfc)));
}
//****************************************************************************/
///
/// 機能     : 文字列の空白を削除する 
///
/// 返り値   : 削除した文字列を返す
///
/// 機能説明 : 文字列の空白を削除する
///            
///
/// 備考     : 
///
//****************************************************************************/
char * Trim(char * str)
{
char *pStr;                   /* 臨時変数 */
    char *ret;                    /* 処理後文字列 */
    char str2[5000];
    pStr = str;
    
    memset(str2,'/0',sizeof(str2));
    
    ret="";
    
    if( str==NULL || strlen(str)== 0 ){
     return ret;
    }
    
    SubStr(pStr,1,3,str2);
    while( *pStr == ' ' || *pStr == '/t' || *pStr == '/r' || *pStr == '/n' || strcmp(str2," ")==0  )
    {
         
         if(strcmp(str2," ")==0)
         {
             pStr=pStr+2;
         }
         pStr=pStr+1;
        SubStr(pStr,1,3,str2);    
    }
    ret = pStr;
    /* 文字列右側セット */
    while( *pStr != 0 )
        pStr ++;
    pStr --;
    /* 文字列右側trim処理 */
    while( *pStr == ' ' || *pStr == '/t' || *pStr == '/r' || *pStr == '/n' || strcmp(pStr-2," ")==0)
    {
        
        if(strcmp(pStr-2," ")==0)
        {
            pStr=pStr-2; 
        } 
        pStr=pStr-1;
        *(pStr + 1) = 0;
    }
    *(pStr + 1) = 0;
    return ret;
}
//****************************************************************************/
///
/// 機能     : 指定の文字列を取得する 
///
/// 返り値   : 取得した文字列を返す
///
/// 機能説明 : 指定の文字列を取得する 
///            
///
/// 備考     : 
///
//****************************************************************************/
char* SubStr(char *str, unsigned start, unsigned end, char *retStr)
{
    unsigned n;
    int iStart =start-1;
    int iEnd   =end-1;
    memset(retStr, '/0', sizeof(retStr));
    strcpy(retStr, str);
    if (str == NULL)
    {
        return "";
    }
    if (strlen(str) < end) 
    {
        end = strlen(retStr);
    }
    if (iStart > iEnd) 
    {
        return "";
    }
    n = iEnd - iStart +1;
    strncpy(retStr, retStr + iStart, n);
    if (n!=0)
    {
        retStr[n] = 0;
    }
    return retStr;
}
/****************************************************************************/
///
/// 機能     : 特定文字に転換処理
///
/// 返り値   : RETOK (正常)
///          : RETNG (異常)
///
/// 機能説明 : 特定文字に転換処理
///            
///
/// 備考     : 
///
/****************************************************************************/
int ReplaceStr(char *sSrc, char *sMatchStr, char *sReplaceStr)
{
int  inStringLen;
char szNewString[SP1D0100_C_LARGE_BUFSIZE_FILE];
//char *szNewString;
char *pzFindPos;
//連続の?,,?がみつかりません
if ( (pzFindPos = strstr(sSrc, sMatchStr)) == NULL  ){
return RETOK;
}
//szNewString = (char*)malloc(strlen(sSrc));
//memset(szNewString,0x00,strlen(sSrc));
memset(szNewString,0x00,sizeof(szNewString));
if( (!pzFindPos) || (!sMatchStr) ){
return RETNG;
}
while( pzFindPos )
{
memset(szNewString, 0, sizeof(szNewString));
inStringLen = pzFindPos - sSrc;
strncpy(szNewString, sSrc, inStringLen);
strcat(szNewString, sReplaceStr);
strcat(szNewString, pzFindPos + strlen(sMatchStr));
strcpy(sSrc, szNewString);
pzFindPos = strstr(sSrc, sMatchStr);
}
return RETOK;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值