主题:实现C库函数void itoa(int n,char s[]);
lcc2zxl1314
[专家分:0] 发布于 2010-10-04 14:14:00
[b][b][b][b][color=FF0000][color=0000FF][color=008080][color=0000FF][color=FF0000][size=4]谢谢,大哥大姐了![/size][/color][/color][/color][/color][/color][/b][/b][/b][/b]
回复列表 (共9个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2010-10-04 15:20:00
看庫函數源碼不就行了?或是自己寫了再問大家,看看是否有需要改進的地方。完全不勞而獲不利于自己成長啊:)
板凳
lcc2zxl1314 [专家分:0] 发布于 2010-10-05 13:39:00
兄弟,主要是我不太明白题目是什么意思,你能给我说说嘛?谢谢了
3 楼
强强 [专家分:4740] 发布于 2010-10-05 14:10:00
写一个数字转字符串的函数
4 楼
lcc2zxl1314 [专家分:0] 发布于 2010-10-05 15:49:00
[size=3]这样写行吗?大哥们?
#include"stdlib.h"
#include"stdio.h"
void main()
{int number = 12345;
char string[25];
itoa(number, string, 10);
printf("integer = %d string = %s\n", number, string);
}[/size]
5 楼
cgl_lgs [专家分:21040] 发布于 2010-10-05 17:40:00
題目的意思是您自己寫一個不調用庫函數的itoa函數:)
6 楼
lcc2zxl1314 [专家分:0] 发布于 2010-10-06 11:47:00
大哥们,那我想问一下,我写的对不对呢?谢谢了
7 楼
强强 [专家分:4740] 发布于 2010-10-06 14:34:00
兄弟,我想问一下你写的哪个地方对?
void itoa(int n,char *s)
{
int sign=n;
if(sign<0)
n=-n;
int i=0;
do
{
s[i++]=n%10+'0';//取最后一位数转换
n=n/10;//删除最后一位
}while(n>0);
if(sign<0)
s[i++]='-';
s[i]='\0';
__rev(s);
}
在网上搜的
8 楼
windy0will [专家分:2300] 发布于 2010-10-06 14:49:00
[code=c]
char *
__itoa(int number, char *s, unsigned int radix)
{
static const char table[36]=
{"0123456789abcdefghijklmnopqrstuvwxyz"};
char _c[66]={0}, *pc=_c, *ps=s; /* 所有进制中,2进制字符最长,由于一般最多能支持64位数,故数组的长度是64 + 2(首位各存1各空字符) */
if (!s) return NULL;
if ( (!number) || (radix<2) || (radix>36) ) /* 基数只能在2到36 */
return (*s='0', *(s+1)=0, s);
if ( number<0 ) (number = -number, *ps++ = '-'); /* 负号 */
--pc;
do
{ *++pc = table[ number % radix ]; /* 将数number从个位开始,转换成radix进制字符保存到pc中 */
} while( (number /= radix) );
++pc, --ps;
while( (*++ps = *--pc) ){} /* 将pc中的字符倒序复制到ps中去 */
return (s);
}
[/code]
9 楼
cgl_lgs [专家分:21040] 发布于 2010-10-06 19:58:00
樓主,您寫的只是對函數的使用。
7樓8樓兩位仁兄寫的代碼才是老師需要您寫的代碼:)
如果沒問題,那就給他們倆各30大板結帖吧:)嘿嘿:)
我来回复