C语言工具函数

早过忘川 提交于 2019-12-01 15:32:59
 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\n",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("\n%s\n",str_tmp);
59     return 0;
60 }
根据步长切割字符串:strsplit

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!