鄙视千万个星星中的一颗!!!!

260005065 2004-12-07 04:52:56
一位朋友问的问题:
用指针实现char* itoa(int,char*,int)操作函数?在线等100分
return Value :each of these functions returns a pointer to string. reuturn NULL if error.
parameters:value---Number to be converted;string---String result;len----Buffer length of string.
星星:
//呵呵楼上说没有错
//需要判断正负
//偶都忘记了 不好意思修改下
char* itoa_( int ii_source, char* &opc_dest, int& oi_dest)
{
int i = 0, ti_source = ii_source;

for( ; ; )//得到位数即字符数目
{
if ( (ti_source /= 10) != 0 )
{
++oi_dest;
continue;
}
++oi_dest;
break;
}
opc_dest = (char*)malloc(oi_dest*sizeof(char));
if( ii_source >= 0 )//负数处理
ti_source = ii_source;
else
ti_source = -ii_source;
for( i = 0; i < oi_dest; ++i ) //处理字符数
{
opc_dest[oi_dest-i-1] = ti_source%10;
ti_source /= 10;
}
if( ii_source < 0 )//处理下负数
opc_dest[0] = -opc_dest[0];
return opc_dest;//返回地址需要释放
}
void main(void)
{
int t_t_n = -1234;
char* t_p_c = 0;
int t_l = 0;
t_p_c = itoa_( t_t_n, t_p_c, t_l );
delete[] t_p_c;//记得释放
}

我:
楼上理解好象不对,第一个参数提供的是要转换的数值,第二和三个提供的是空间,不能在函数中分配空间,你怎么连引用都用上了 ^_^
我觉得这样写好一点:
char* itoa(int n,char* str,int len)
{
bool flag=false;
if(n<0){
n=-n;
flag=true;
}
str[--len]=0;
do{
str[--len]=n%10+'0';
n/=10;
}while(n>0);
if(flag){
str[--len]='-';
}
if(len>=0)
return str+len;
return NULL;
}

星星:
呵呵楼上的观点我不敢恭维
第一个参数提供的是要转换的数值//是源操作数
第二和三个提供的是空间//第三个参数提供什么空间?提供空间仅仅一个char字符串int数目要提供什么?
不能在函数中分配空间,你怎么连引用都用上了//-_-我无话可说 只问句你学过c或者c++吗?

另外对于源操作数的位数如果你在程序后面的第三个参数指定
简直不可思议 为什么程序运行在未知的情况下,你如何得到一个操作数的位数你如何指定?
汗 可能是我不理解你的高深的意图
或者说在系统的itoa中 第三个参数处理了
各种进制状况
可是看你的程序
好象也不是用来处理10进制 或者 2进制 16进制的情况?
偶只是处理了10进制
再仔细看下楼主的题目:参数描述
value---Number to be converted;//待转化的数
string---String result;//字符串结果保存
len----Buffer length of string //字符串字节长度
偶没有翻译错吧
这里的参数偶想没有理解错吧!!!
Int的大小难道不能确定范围吗?
为什么还要进行限制呢?最多4个字节表书不过10多位
如果说 char* 在外部分配了空间了 或许 len标志他的分配的长度还能说的过去
按照楼主提供的定义 不一定非要在外部分配空间
因为 return的char*还是 传入的地址 没什么意义了
更合理的我认为
char* temp ;//在内部分配 return出来
或者 静态的char数组 return出来
return NULL; 可能在malloc或者new异常返回
我不认为 len 是用来限制的 ,起码不是来限制操作源的~~~~
实在没有什么意义
...全文
445 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbaby 2004-12-08
  • 打赏
  • 举报
回复
要是以后有你的帖子,俺是不敢回答的,因为俺也是星,俺怕别人BS
俺更怕回答完问题之后被BS...
long2519 2004-12-08
  • 打赏
  • 举报
回复
技术讨论也不至于吧?
再说人家也承认错误了不是?
wasoxi 2004-12-07
  • 打赏
  • 举报
回复
以后大家回答问题都 温和 一点了
教者,诲人以善而导之。

如果说的有点“不道德”可能也是无意的

楼主是MM,应该少生气了 不然会有皱纹的哦 ^_^
jnch 2004-12-07
  • 打赏
  • 举报
回复
鄙视星星!!!
chengfh 2004-12-07
  • 打赏
  • 举报
回复
女人发飚了,快逃
yevv 2004-12-07
  • 打赏
  • 举报
回复
答错了 未必是“不认真” 伤着了 未必是存心故意 一笑而过
goodluckyxl 2004-12-07
  • 打赏
  • 举报
回复
是的 char*& 后面我已经给出另外解决方法
是用 内部static 或者用 return 出malloc空间
为什么用char*& 因为我考虑过不合适char* 才修改的
这样更合理

但是你的代码真的就符合吗?
你连意思都没看就 定义了len的定义
基于这个问题我觉得完全不合理

而且你也没有必要把你性别说出来 //不要否认客观影响
博得同情分 冲你这点我觉得我的话一点都没有错
不要说我和女孩子斤斤计较
还是那句话错的我认 没道理的我站出来为自己说话
虽然形式上我和楼主问题不一致
但是一点都不影响功能 他可以选择我的用 也可以不用
而且你当时反驳我的并不是我的这个问题
我们仅仅针对的是你提出的问题而产生意见的是吧
现在为什么要偷换主题 //
pandengzhe 2004-12-07
  • 打赏
  • 举报
回复
Cassati 2004-12-07
  • 打赏
  • 举报
回复
汗。。才学了一个月C++的MM啊。。。。。强啊。。俺不活了
hongzm 2004-12-07
  • 打赏
  • 举报
回复
有人讨论技术应该是一件很愉快的事!:)~~
偶有二点很惊奇~~
楼上的是MM,强
楼上的才学了一个月C++ 更强~

我,我,我想自杀~
The123 2004-12-07
  • 打赏
  • 举报
回复
小妹?

来人啊,把goodluckyxl拖出去暴K一顿,直到其“溢出”为止
260005065 2004-12-07
  • 打赏
  • 举报
回复
强烈鄙视你不负责任的行为:
您看题了吗?函数声明已经给了char* itoa(int,char*,int)你用引用对吗?
您的程序对吗?您自己编译一下看看,是不是对的,至少我写的程序都是运行正确的。
对于你的道歉是无所谓的,因为你说的是事实,小妹我才看一个月的c++,根本不懂什么,也没念过什么大学,只是喜欢写点小程序,望你嘴下留德,不要看不起我们这些喜欢编程的业余菜鸟.....................................................................................
wingfiring 2004-12-07
  • 打赏
  • 举报
回复
就技术而言,楼主的责问没什么问题。
只是,错了就错了,没必要上纲上线,单纯的就技术而争论,激烈一点没没什么关系。

星星是因为比较热心,回答的问题多,才有星星的。其次,网友的回帖,不必是为了直接解决问题,别人没这个义务,就一个问题展开讨论,对更多人提高水平有帮助更适合csdn的宗旨。因此,建议大家在发言的时候,不要涉及个人技术的评判,更不要论及什么品质问题。谦和和礼让的气氛,才能够容忍激烈的技术交锋,是不是呢?
Cassati 2004-12-07
  • 打赏
  • 举报
回复
请问误会消除了没有?散不散分^_^
pacman2000 2004-12-07
  • 打赏
  • 举报
回复
嘿嘿。。。 冒个泡泡。。。
pcyy 2004-12-07
  • 打赏
  • 举报
回复
to:大龙驹
是啊,要加强学习。
cxjddd 2004-12-07
  • 打赏
  • 举报
回复
打死也不做星星了 >_<
goodluckyxl 2004-12-07
  • 打赏
  • 举报
回复
有点我想楼主弄明白
我只尊重事实
我本来想就事论事
如果你的解释基于对题目的理解的基础上对我评论
我想我可以接受
但是你完全建立在没有阅读题目就随意发表观点
你仔细看了题目吗?我只问一句

还有如果是我错了我肯定会承认

我在这里回答的问题也不算少
我从来没有因为别人的有些地方不懂而鄙视别人
你可以查查我所有的回复
如果你没有这功能我可以查了一一帖出来给你看
是不是我对别人的问题都负责的问答
有那个问题胡乱灌水或者乱闹 (除非没有意义的问题)
我想大家在这里都有有个公正的评论

对于说你是否学过c++可能我说的稍微重了些
伤害楼主感情 我想这个我可以收回我的话
但是对于一个我认为没有认真做事的人没必要客气
我自己也有几次没有看问题回答 被人批 但是我自己补上了正确的回答及承认自己问题

话我就说到这里
如果你到这里问问题,那么欢迎
闹口水,我不奉陪
还有你对谁有意见 没有必要含沙射影 直接点名就可以了
何必弄水源这一套
darkstar21cn 2004-12-07
  • 打赏
  • 举报
回复
楼上理解好象不对,第一个参数提供的是要转换的数值,第二和三个提供的是空间,不能在函数中分配空间,你怎么连引用都用上了 ^_^

没看完,这句楼主是错的。使用char*& p表示p能够被改变——能够分配空间,并且把分配空间的首地址带出函数。你并不能要求别人给你分配好了空间只后才放到你的函数里去。这样还可以避免对空指针进行操作。

这个星星说话是比较冲,楼主不必这样激动嘛。
athena_6668 2004-12-07
  • 打赏
  • 举报
回复
呵呵 什么跟什么
加载更多回复(8)

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧