自己做的练习题,不知道对不对,自学只能做到这个程度,如果有更好的方法,麻烦留我一份,共同进步
char* itoa(int value, char *str,int w) {
if (str == NULL) {
return NULL;
}
char buf[256] = { 0 }; //存储转换结果
char temp; // 用于交换数据
char *to = NULL, *from = NULL; // 用于交换数据
int n, i, j, v;
n = i = j = 0;
v = value;
do {
n = v % 10;
buf[i++] = ((n < 0) ? -n : n) | '0'; //判断取摸正负
v /= 10; // 删除给数
} while (v != 0);
if (value < 0) { //如果是负数末尾添加‘-’号
buf[i++] = '-';
}
while (i<w) // 练习3-6 添加,判断是否小于最小宽度,是则添加空格
{
buf[i++] = ' ';
}
buf[i--] = '\0';
for (j = 0;j < i;++j, --i) //反转buf
{
temp = buf[j];
buf[j] = buf[i];
buf[i] = temp;
}
to = str;
from = buf;
while ((*to++ = *from++) != '\0'); //复制到str
return str;
}