wang815309286 发表于 2016-11-1 09:26:34

自己写的itoa函数最后打印不出来,找了半天也没找到问题..

#include<stdio.h>
#defineSWAP(a,b) \
do\
{\
        a=(a)+(b);\
        b=(a)-(b);\
        b=(a)-(b);\
}while(0)

void itoa(int num,char *ch)
{
        int rest;
        int i =0;
        int j=0;
       
        do
        {
        rest=num%10;
        ch=rest;
        num/=10;
        }while(num!=0);
       
        ch='\0';
       
        printf("ch=%s\n",ch);
       
        for(j=0;j<i/2;j++)
        {
                SWAP(ch,ch);
        }
       
        printf("ch=%s\n",ch);
}
int main(void)
{
        char buff;
       
        itoa(200,buff);
       
        puts(buff);
   return 0;
}

麻烦帮忙看一下哪里出了问题~感谢~

人造人 发表于 2016-11-1 12:34:12

本帖最后由 人造人 于 2016-11-1 12:36 编辑

SWAP 宏 有问题
24行 有问题
#include<stdio.h>

// 注意这里
#defineSWAP(a,b) \
do\
{\
        a=(a)+(b);\
      b=(a)-(b);\
      a=(a)-(b);\
}while(0)

void itoa(int num, char *ch)
{
        int rest;
        int i = 0;
        int j = 0;

        do
        {
                rest = num % 10;
                ch = rest + '0'; // 注意这里
                num /= 10;
        } while(num != 0);

        ch = '\0';

        //printf("ch=%s\n", ch);

        for(j = 0; j<i / 2; j++)
        {
                SWAP(ch, ch);
        }

        //printf("ch=%s\n", ch);
}
int main(void)
{
        char buff;

        itoa(12345, buff);

        puts(buff);
        return 0;
}
页: [1]
查看完整版本: 自己写的itoa函数最后打印不出来,找了半天也没找到问题..