/*
*
* 播布客教学视频_C学习笔记_9.2_整形转字符串(函数实现)
* author: syt<sytshanli@163.com>
* create date: 2014.11.29
*
* 1.函数主体部分写成函数,逆序部分也写成函数
* 2.每一个整体都抽象成一个函数
* 3.交换函数的实现问题:(利用条件编译“#if 0,#endif”)
* 形参和实参之间的区别
* 利用函数式宏定义("#define"),实现交换
* 4.花括号的“;”问题,运用do-while(0)思想
*/
#include<stdio.h>
/* 交换函数 */
#if 0
void swap(int a,int b)
{
char tmp; //临时变量
tmp = b;
b = a;
a = tmp;
}
#endif
#define swap(a,b) \
do \
{ \
char tmp; \
tmp = b; \
b = a; \
a = tmp; \
}whlie(0) //不写分号,但是后面调用过程出现“;”
/*string "321" to string "123"*/
void reverse(char buf[],int i)
{
int j = 0;
for(j = 0; j < i/2; j++)
{
/*运用交换函数*/
swap(buf[j],buf[i-1-j]);
}
}
/*num 123 to string "123"*/
void itoa(int num,char buf[])
{
int i = 0; //一定要赋予初值
/*num 123 to string "321"*/
do
{
buf[i] = num % 10 + '0';
i++;
num /= 10;
}while(num != 0);
buf[i] = '\0'; //最后一个i表示结束
reverse(buf,i);//实现逆序
}
int main(void)
{
int num = 123;
char buf[10];
int i = 0; //一定要赋予初值
int j = 0;
printf("please input a num:\n");
scanf("%d",&num); //不要使用“\n”
printf("num = %d\n",num);
itoa(num,buf);
printf("buf = %s\n",buf);
return 0;
}