思路
把整数的按位取出来,放到一个buf里面,但是这时候是反序的,然后再反过来从buf里面拷贝到目标字符串中,如果有符号,目标第一个字符为符号位
代码实现
int int2str(char * str, int num){
if(NULL == str){
printf("int2str param error\n");
return PARAM_ERR;
}
int negative = 0;
char buf[100] = {0};
int len = 0, k = 0, i = 0, tmp = 0, n = 0, lenstr = 0;
if(num < 0){
negative = 1;
n = -num;
} else {
n = num;
}
do{
tmp = n % 10;
buf[k++] = tmp + '0';
n = n / 10;
} while(n != 0);
len = k; /*len 不用在 + 1,因为 k++了*/
lenstr = len;
k = 0;
if(1 == negative){
str[k++] = '-';
lenstr = lenstr + 1;
}
for(i = len - 1; i >= 0; i--){
str[k++] = buf[i];
}
str[lenstr] = '\0';
return SUCCESS;
}
void testint2str(void){
char dst[100] = {0};
printf("\n************ testint2str ************ \n");
int2str(dst, 1234);
printf("num = %s\n", dst);
memset(dst, 0x0, 100);
int2str(dst, -1234);
printf("num = %s\n", dst);
return;
}
代码编译
gcc main.c str.c -g -o a.exe
调试输出
************ testint2str ************
num = 1234
num = -1234