回 帖 发 新 帖 刷新版面

主题:实现C库函数void itoa(int n,char s[]);

[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个回复)

沙发

看庫函數源碼不就行了?或是自己寫了再問大家,看看是否有需要改進的地方。完全不勞而獲不利于自己成長啊:)

板凳


兄弟,主要是我不太明白题目是什么意思,你能给我说说嘛?谢谢了

3 楼

写一个数字转字符串的函数

4 楼

[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 楼

題目的意思是您自己寫一個不調用庫函數的itoa函數:)

6 楼

大哥们,那我想问一下,我写的对不对呢?谢谢了

7 楼

兄弟,我想问一下你写的哪个地方对?
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 楼

[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 楼

樓主,您寫的只是對函數的使用。

7樓8樓兩位仁兄寫的代碼才是老師需要您寫的代碼:)
如果沒問題,那就給他們倆各30大板結帖吧:)嘿嘿:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册