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;
}
相关推荐
思成Codes3 分钟前
数据结构:基础线段树——线段树系列(提供模板)
数据结构·算法
KoalaShane8 分钟前
El-slider 增加鼠标滚动滑块事件
开发语言·前端·javascript
智算菩萨19 分钟前
【Python进阶】搭建AI工程:Python模块、包与版本控制
开发语言·人工智能·python
C_心欲无痕21 分钟前
vue3 - watchSyncEffect同步执行的响应式副作用
开发语言·前端·javascript·vue.js·vue3
墨雪不会编程26 分钟前
C++【string篇1遍历方式】:从零开始到熟悉使用string类
java·开发语言·c++
特立独行的猫a29 分钟前
QT开发鸿蒙PC应用:环境搭建及第一个HelloWorld
开发语言·qt·harmonyos·环境搭建·鸿蒙pc
a努力。36 分钟前
字节Java面试被问:系统限流的实现方式
java·开发语言·后端·面试·职场和发展·golang
独自破碎E38 分钟前
Java中的Exception和Error有什么区别?
java·开发语言
zyx没烦恼1 小时前
YAML模块
开发语言·python
JAY_LIN——81 小时前
C语言>字符 (strlen) | 字符串函数(strcpy、strcat)
c语言