代码接口说明如下:
1、char* Split_Num(int num);
传入所需要分离的多位数,比如说123。
返回值:返回动态开辟数组的指针
数据存储:将3存入buf[0],将2存入buf[1],将1存入buf[2],' \0 '存buf[3],即:低位存低位
2、void print_str(char* str);
调试代码,用于打印字符串数据。
具体代码实现如下:
#include #include #include /* 拆分一个整数,将各个位存入数组,第0位存入个位 */ /* 返回值:动态创建的数组首地址,失败返回NULL */ char* Split_Num(int num){ char* Split_Num_point = NULL; char* point_tmp = NULL; int digit = 1;//传入num的位数 int i=0;//循环控制变量 int num_tmp = num; /* 1.遍历,直到个位 */ while(1){ num_tmp/=10; if(num_tmp == 0){ //num/10=0代表已经到达了个位 break; } digit++; } printf("Debug:digit = %d\n",digit); /* 2.开辟数组空间 */ //有多少位就开辟多少空间+1,多的1个空间是用来存'\0' Split_Num_point = (char*)malloc(sizeof(char)*(digit+1)); point_tmp = Split_Num_point; if(Split_Num_point == NULL){ printf("malloc err\n"); return NULL; } printf("Debug:malloc success\n"); /* 3.从最高位开始,获取每一位的值 */ num_tmp = num; printf("Debug:num_tmp = %d\n",num_tmp); point_tmp += digit;//指针偏移到数组末尾 *point_tmp = '\0'; point_tmp--; for(i=digit-1;i>0;i--){ *point_tmp = num_tmp/pow(10,i); num_tmp = num_tmp%((int)pow(10,i)); printf("Debug:i=%d,*point_tmp = %d\n",i,*point_tmp); printf("Debug:i=%d,num_tmp = %d\n",i,num_tmp); point_tmp--; } *point_tmp = num_tmp; printf("Debug:i=%d,*point_tmp = %d\n",i,*point_tmp); return Split_Num_point; } void print_str(char* str){ char* point = str; while(*point != '\0'){ printf("%d",*point); point++; } } int main(){ char* p; p = Split_Num(87123); print_str(p); return 0; }