社区
新手乐园
帖子详情
谁能帮我简单的实现这个"算法"??
RichRiver
2004-08-12 08:46:24
int num = 8;
char temp[3];
itoa(num,temp,10);之后,temp的值为8
而我希望是temp的值为008
谁能帮我简单的实现这个"算法"呢??
...全文
128
21
打赏
收藏
谁能帮我简单的实现这个"算法"??
int num = 8; char temp[3]; itoa(num,temp,10);之后,temp的值为8 而我希望是temp的值为008 谁能帮我简单的实现这个"算法"呢??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
几个推荐
算法
的java
实现
总的来说,这个项目提供了多种推荐
算法
的Java
实现
,对于学习和应用推荐系统,尤其是对Java编程感兴趣的开发者,是非常有价值的资源。通过理解和实践这些
算法
,不仅可以提升对推荐系统的理解,也有助于提高解决实际...
MoreWindows白话经典
算法
之七大排序第2版(高清)
冒泡排序是最基础的排序
算法
之一,其原理
简单
直观,通过不断比较相邻两个元素的大小并交换位置来
实现
排序。书中提供了冒泡排序的三种
实现
方式: - **冒泡排序1**:基本版本,通过双重循环完成排序。 - **冒泡排序2*...
MoreWindows白话经典
算法
之七大排序(高清版)
冒泡排序是一种
简单
直观的排序
算法
,它的基本思想是从第一个元素开始,比较相邻元素的大小,如果前一个元素大于后一个元素则交换它们的位置,这样一轮比较下来,最大的元素会像气泡一样“浮”到最后的位置。...
MD5加密
算法
1. **md5c.c**: 这个文件可能是MD5
算法
的具体核心代码,
实现
了MD5函数的计算逻辑,包括分组处理和最终哈希值的生成。 2. **md5.h**: 这个头文件包含了MD5函数的声明和可能的宏定义,用于在其他源文件中调用MD5函数...
1000多种java
算法
大全源码包
Java
算法
大全源码包是一个集合了众多
算法
实现
的资源库,涵盖了数据结构、排序、搜索、图论等多个领域的经典
算法
。这个源码包是学习和理解计算机科学基础以及提升编程能力的理想工具,尤其对于Java开发者来说,它提供...
新手乐园
33,320
社区成员
41,774
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章