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'。