代码接口说明如下:
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);
调试代码,用于打印字符串数据。
具体代码实现如下:
cpp
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
/* 拆分一个整数,将各个位存入数组,第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;
}