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 }
根据步长切割字符串:strsplit
技术图片
 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
替换字符串:strrpc

以上是关于C语言工具函数的主要内容,如果未能解决你的问题,请参考以下文章

VBS 环境下如何调用EXCEL内置函数

C语言中如何将自己常用的函数封装到编译器的库函数中具体应该怎么做呢?

Qt编程遇到的问题,我在qt中直接使用C语言的程序片段,有问题 ,求解

C语言项目贪吃蛇游戏(下)

C语言常用的几个工具函数

C语言常用的一些转换工具函数收集