社区
新手乐园
帖子详情
谁能帮我简单的实现这个"算法"??
RichRiver
2004-08-12 08:46:24
int num = 8;
char temp[3];
itoa(num,temp,10);之后,temp的值为8
而我希望是temp的值为008
谁能帮我简单的实现这个"算法"呢??
...全文
118
21
打赏
收藏
谁能帮我简单的实现这个"算法"??
int num = 8; char temp[3]; itoa(num,temp,10);之后,temp的值为8 而我希望是temp的值为008 谁能帮我简单的实现这个"算法"呢??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
antijpn
2004-08-12
打赏
举报
回复
sprintf似乎灵活性上面不是很好,进制转换就没办法进行了(只能到十进制、十六进制,八进制了)
如果数据再大一点,可以考虑超过十的进制,这样就可以保存更大一点的数字了(36进制的三位可以保存0~46655了)
RichRiver
2004-08-12
打赏
举报
回复
哈哈
这就是我想要的
结贴,给分
寒雪叔叔
2004-08-12
打赏
举报
回复
天,英雄所见,代码的相似度99.9999%,佩服stephen_wang_2000
expert2000
2004-08-12
打赏
举报
回复
学习,帮顶。楼主给点分我就能升级。
寒雪叔叔
2004-08-12
打赏
举报
回复
long num = 8;
char temp[4];
sprintf(temp, "%03d", num);
stephen_wang_2000
2004-08-12
打赏
举报
回复
int num = 8;
char temp[4];
sprintf(temp,"%03d",num);
RichRiver
2004-08-12
打赏
举报
回复
char ch_data[3]={0,0,0};
char temp[3]={0,0,0};
char ttt;
int num;
itoa(num,temp,10);
if(num<10)
{
ttt=temp[0];
ch_data[2]=ttt;
}else if((num>9)&&(num<100))
{
ttt=temp[0];
ch_data[1]=ttt;
ttt=temp[1];
ch_data[2]=ttt;
}else if(num>99)
strcpy(ch_data,temp);
我是这样写的,感觉麻烦:(
YunTan
2004-08-12
打赏
举报
回复
前面代码要#incluce <string>之后才能用。效率低,但思路清晰易写。
YunTan
2004-08-12
打赏
举报
回复
我从来不喜欢考虑小程序的效率,所以给一个简单代码给楼主:
itoa(num,temp,10);
std::string szNum = temp;
while(szNum.size()<3){
szNum = '0' + szNum;
}
//此时szNum的内容已经是“003”
//如果要在temp中以字符数组返回,那么这样做:
strcpy(temp,szNum.c_str());
antijpn
2004-08-12
打赏
举报
回复
回复人: kenan2002() ( ) 信誉:100 2004-08-12 08:56:00 得分: 0
strcat("00",itoa(num,temp,10));
什么时候strcat能这样用了?这样搞不好就是个非法操作,因为你没有正确分配空间
kenan2002
2004-08-12
打赏
举报
回复
同意中
kenan2002
2004-08-12
打赏
举报
回复
精彩!
YunTan
2004-08-12
打赏
举报
回复
打错了:
“字符串"008"的长度是4个字节”。
看到前面的留言:
strcat("00",itoa(num,temp,10));
这样的语句,内存如果不崩溃证明你运气非常的好。
RichRiver
2004-08-12
打赏
举报
回复
回复: YunTan(闲云潭影)
itoa(num,temp,10);之后
temp = [8][..][..]
我希望是[0][0][8]
antijpn
2004-08-12
打赏
举报
回复
如果不考虑我上面说的问题,你的转换好像也不对,转换成"008"以后应该用char[4]来保存,而不是char[3]
简单一点的就是采用两次itoa,对第一次得到的结果使用strlen,然后填充前面的内容,在调用一次itoa把真正的数据补上去
具体代码如下
extern char buf[4];
extern int ival;
itoa(ival,buf,10);
unsigned int Len=strlen(buf);//buf里面不能超过三位数字
Len=3-Len;
memset(buf,'0',Len);//前面填充'0'
itoa(ival,buf+Len,10);//填充实际数据,这样就可以了
RichRiver
2004-08-12
打赏
举报
回复
回复:clshan()
就是自己怎么补简单阿,有简单的函数吗?
回复: antijpn(antijpn)
最大就是999
回复: kenan2002()
不难吧?
YunTan
2004-08-12
打赏
举报
回复
自己补上,判断temp的长度(strlen)是多少,少于3的就在前面添加'0'。
另外提醒:
字符串"008"的长度是4个自己,而你的temp才定义了三个字节,是不够用的。num是整形,最大长度有十来位(十进制),为了安全起见,建议将你的temp定义改为:char temp[12]。
kenan2002
2004-08-12
打赏
举报
回复
strcat("00",itoa(num,temp,10));
kenan2002
2004-08-12
打赏
举报
回复
简单吗?
antijpn
2004-08-12
打赏
举报
回复
只给三位?那最多也只能是从char到char*阿,int型数据大了以后你怎么办?
加载更多回复(1)
微信小程序-番茄时钟源码
微信小程序番茄时钟的源码,支持进一步的修改。番茄钟,指的是把工作任务分解成半小时左右,集中精力工作25分钟后休息5分钟,如此视作种一个“番茄”,而“番茄工作法”的流程能使下一个30分钟更有动力。
激光雷达专题研究:迈向高阶智能化关键,前瞻布局把握行业脉搏.pdf
电子元件 电子行业 行业分析 数据分析 数据报告 行业报告
安享智慧理财测试项目Mock服务代码
安享智慧理财测试项目Mock服务代码
课程设计 基于SparkMLlib的ALS
算法
的电影推荐系统源码+详细文档+全部数据齐全.zip
【资源说明】 课程设计 基于SparkMLlib的ALS
算法
的电影推荐系统源码+详细文档+全部数据齐全.zip课程设计 基于SparkMLlib的ALS
算法
的电影推荐系统源码+详细文档+全部数据齐全.zip 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以
实现
其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
华中科技大学电信专业 课程资料 作业 代码 实验报告-雷达与信息对抗-内含源码和说明书.zip
华中科技大学电信专业 课程资料 作业 代码 实验报告-雷达与信息对抗-内含源码和说明书.zip
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章