本帖最后由 sunrise085 于 2020-3-18 13:10 编辑
你想问定义部分吧。
函数定义和函数声明是不一样的哟~~#include <stdio.h>
char *myitoa(int num, char *str); //这里才是函数声明,有两个参数,一个整型num,一个char指针,返回值是char指针
char *myitoa(int num, char *str) //这里是函数定义
{
int dec = 1; //这个变量是为了看传递进来的参数num是多少位的
int i = 0;
int temp;
if (num < 0) //if语句块用于判断num的±
{
str[i++] = '-'; //若num是负数,则在字符串str前面添加负号,若是正数则不需要添加
num = -num; //将num变为正数,为下面的转换做准备
}
temp = num; //将num赋值给temp,防止下面的while循环修改num的值
while (temp > 9) //此循环为了数temp(即num)的位数,只要temp不是一位数就进行循环
{
dec *= 10; //dec乘以10,位数加1
temp /= 10; //temp=temp/10,每次循环,temp从后面删掉一位
}
while (dec != 0) //根据num的位数从高位开始转换,将每一位数字转为字符,添加到str指针后面
{
str[i++] = num / dec + '0'; //num/dec获取num的最高位,然后加'0'将之转为字符,添加到str指针后
num = num % dec; //num对dec求余,去掉最高位,为下一次循环做准备
dec /= 10; //dec除以10,位数减少一位,为下一次循环做准备
}
str[i] = '\0'; //转换结束后,在str末尾添加一个字符串结束符'\0'
return str; //返回str指针
}
int main(void)
{
char str[10];
printf("%s\n", myitoa(520, str));
printf("%s\n", myitoa(-1234, str));
return 0;
}
|