C语言工具函数
Posted q10040
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言工具函数相关的知识,希望对你有一定的参考价值。
1 /************************************************* 2 *函数功能:根据步长切割字符串 3 *参数str:待分割的字符串 4 *参数step:步长 5 *返回值:返回切割得到的字符串 6 *备注:调用需包含string.h 7 *************************************************/ 8 char *strsplit(char *str,short step){ 9 char bstr[1024] = {0};//转换缓冲区,内存不足可调小 10 static char *str_ptr = NULL; 11 static short idx = 0; 12 13 if(str) {str_ptr = str;idx = 0;} 14 if(idx>strlen(str_ptr)) {return NULL;} 15 strncpy(bstr,str_ptr+idx,step); 16 idx += step; 17 18 return bstr; 19 } 20 21 /************************************************/ 22 //用例:转换16进制字符串 23 /************************************************/ 24 #include <stdio.h> 25 #include <string.h> 26 27 char *strsplit(char *str,short step){ 28 char bstr[1024] = {0};//转换缓冲区 29 static char *str_ptr = NULL; 30 static short idx = 0; 31 32 if(str) {str_ptr = str;idx = 0;} 33 if(idx>strlen(str_ptr)) {return NULL;} 34 strncpy(bstr,str_ptr+idx,step); 35 idx += step; 36 37 return bstr; 38 } 39 40 int main() 41 { 42 char str[] = "00630065006E007400650072002C0061002C0031003200330034003500360023"; 43 char str_tmp[80] = {0}; 44 char *token; 45 46 printf("%s ",str); 47 48 token = strsplit(str,4); 49 50 while(token != NULL){ 51 char ch[5]={0}; 52 53 sscanf(token,"%X",ch); 54 strcat(str_tmp,ch); 55 token = strsplit(NULL,4); 56 } 57 58 printf(" %s ",str_tmp); 59 return 0; 60 }
1 /************************************************* 2 *函数功能:使用newstr替换oldstr,若newstr为空,则表示删除 3 *参数str:待处理的字符串 4 *参数oldstr:旧字符串 5 *参数newstr:新字符串(可传NULL) 6 *返回值:返回处理得到的字符串 7 *备注:调用需包含string.h 8 *************************************************/ 9 char *strrpc(char *str,char *oldstr,char *newstr) 10 { 11 char bstr[1024] = {0};//转换缓冲区 12 int i = 0; 13 14 for(i=0;i<strlen(str);i++) 15 { 16 if(!strncmp(str+i,oldstr,strlen(oldstr))) 17 {//查找目标字符串 18 if(newstr!=NULL) {strcat(bstr,newstr);}//newstr参数若为NULL,则表示删除字符串 19 i += strlen(oldstr)-1; 20 }else{ 21 strncat(bstr,str+i,1);//保存一字节进缓冲区 22 } 23 } 24 25 strcpy(str,bstr); 26 27 return bstr; 28 } 29 30 /************************************************/ 31 //用例:转换16进制字符串 32 /************************************************/ 33 #include <stdio.h> 34 #include <string.h> 35 36 char *strrpc(char *str,char *oldstr,char *newstr) 37 { 38 char bstr[1024] = {0};//转换缓冲区 39 int i = 0; 40 41 for(i=0;i<strlen(str);i++) 42 { 43 if(!strncmp(str+i,oldstr,strlen(oldstr))) 44 {//查找目标字符串 45 if(newstr!=NULL) {strcat(bstr,newstr);}//newstr参数若为NULL,则表示删除字符串 46 i += strlen(oldstr)-1; 47 }else{ 48 strncat(bstr,str+i,1);//保存一字节进缓冲区 49 } 50 } 51 52 strcpy(str,bstr); 53 54 return bstr; 55 } 56 57 int main() 58 { 59 char str[] = "00630065006E007400650072FF0C0061FF0C0031003200330034003500360023"; 60 char str_tmp[80] = {0}; 61 62 printf("%s ",str); 63 64 strrpc(str,"FF0C","002C"); 65 strrpc(str,"00",NULL); 66 67 printf(" %s ",str); 68 69 return 0; 70 } 71 72 替换字符串:strrpc
以上是关于C语言工具函数的主要内容,如果未能解决你的问题,请参考以下文章
C语言中如何将自己常用的函数封装到编译器的库函数中具体应该怎么做呢?