2.C_Demo_实现多位数分离

代码接口说明如下:

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;
}
相关推荐
键盘鼓手苏苏25 分钟前
Flutter for OpenHarmony 实战:Envied — 环境变量与私钥安全守护者
开发语言·安全·flutter·华为·rust·harmonyos
特种加菲猫25 分钟前
C++核心语法入门:从命名空间到nullptr的全面解析
开发语言·c++
坚持就完事了27 分钟前
Java泛型
java·开发语言
浮生091933 分钟前
DHUOJ 基础 85 86 87
数据结构·c++·算法
Channing Lewis42 分钟前
zoho crm的子表添加行时,有一个勾选字段,如何让它在details页面新建子表行(点击add row)时默认是勾选的
开发语言·前端·javascript
Miqiuha1 小时前
工作答辩框架
java·开发语言
happymaker06261 小时前
Java学习日记——DAY25(JavaSE完结)
java·开发语言·学习
say_fall1 小时前
双指针算法详解:从原理到实战(含LeetCode经典例题)
算法·leetcode·职场和发展
qq_24218863321 小时前
快速搭建跨环境检测服务的步骤
linux·开发语言·windows·python·macos
追随者永远是胜利者1 小时前
(LeetCode-Hot100)33. 搜索旋转排序数组
java·算法·leetcode·职场和发展·go