C语言代码段

/* 功  能:将str字符串中的oldstr字符串替换为newstr字符串
 * 参  数:str:操作目标 oldstr:被替换者 newstr:替换者
 * 返回值:返回替换之后的字符串
 */
char *strrpc(char *str,char *oldstr,char *newstr){
    char bstr[strlen(str)];//转换缓冲区
    memset(bstr,0,sizeof(bstr));
    for(int i = 0;i < strlen(str);i++){
        if(!strncmp(str+i,oldstr,strlen(oldstr))){//查找目标字符串
            strcat(bstr,newstr);
            i += strlen(oldstr) - 1;
        }else{
            strncat(bstr,str + i,1);//保存一字节进缓冲区
        }
    }
 
    strcpy(str,bstr);
    return str;
}

 

// -----------------------------------------------------------------
// 函数功能: 字节数组转字符串类型
// 函数名称: hexbyte_to_hex_str
// 参数1   : src 源字符串
// 参数2   : obj 目标字节数组
// 说明    : {0x01,0x03,0x03,x04} --> "01020304"
// 返回值  : 1 成功
// -----------------------------------------------------------------
static int hexbyte_to_hex_str (char *src, char *obj, uint16_t length)
{
    for (int i = 0; i < length; i++)
    {
        sprintf (obj, "%02X", src[i]);
        obj += 2;
    }
    return 1;
}
// -----------------------------------------------------------------
// 函数功能: hex字符串转byte数组
// 函数名称: hexbyte_to_hex_str
// 参数1   : src 源字符串
// 参数2   : obj 目标字节数组
// 说明    : "01020304" --> {0x01,0x03,0x03,x04} 或 "01 02 03 04"->{0x01,0x03,0x03,x04}
// 返回值  : 1 成功
// -----------------------------------------------------------------
static int hexstr_to_hexbyte (char *src, char *obj, uint16_t length)
{
    char h1, h2;
    uint8_t  s1, s2;
    int i;

    for (i = 0; i < length; i++)
    {
        h1 = src[2 * i];
        h2 = src[2 * i + 1];

        s1 = toupper (h1) - 0x30;
        if (s1 > 9)
            s1 -= 7;
        s2 = toupper (h2) - 0x30;
        if (s2 > 9)
            s2 -= 7;
        obj[i] = s1 * 16 + s2;
    }
    return 1;
}

// 函数封装
TypeFunc_t TypeFunc =
{
    hexbyte_to_hex_str, //HexToStr
    hexstr_to_hexbyte,  //StrToHex
};

 

// char类型转化成int类型
char a = '9';
int b;
b = a - '0';    //b = 9

// int类型转化成char类型
int a = 9;
char b;
b = a + '0';    //b = '9'

 

C语言中单引号和双引号的区别 

1、含义不同

用 单引号引起的一个字符实际上代表一个 整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是 ASCII字符集。因此's'的含义其实和十进制数115的含义是一致的。
而用 双引号引起的字符串,代表的是一个指向无名数组起始字符的 指针。 

2、大小不同

用 单引号引起的一个字符大小就是 一个字节。
而用 双引号引起的字符串大小是 字符的总大小+1,因为用双引号引起的字符串会在字符串末尾添加一个二进制为0的字符'\0'。
posted @ 2021-04-16 20:59  kerwin cui  阅读(126)  评论(0编辑  收藏  举报