#include<iostream>
using namespace std;
void int2str(int n, char *str)
{
char buf[10] = " ";
int i = 0;
int len = 0;
int temp = n < 0 ? -n : n;
if (str == NULL)
return;
while (temp)
{
buf[i++] = (temp % 10) + '0'; //buf[i]的最后一个是'\0'
temp = temp / 10;
}
len = n < 0 ? ++i : i;
str[i] = 0; //放字符串最后的\0
while (1)
{
i--; //倒着放
if (buf[len - i - 1] == 0) //break时到了buf数组里的'\0'即最后一个,'\0'已经放了,直接跳出然后去看符号
break;
str[i] = buf[len - i - 1];
}
if (i == 0) //如果是负数的话,前面len = n < 0 ? ++i : i; i+1了,到这里i就=0,如果是整数i=-1,就不加前面的负号
str[i] = '-';
}
int main()
{
int nNum;
char p[10];
cout << "please enter an integer" << endl;
cin >> nNum;
cout << "output" << endl;
int2str(nNum, p);
cout << p << endl;
return 0;
}
思想,把整数的正负号去掉,此时可用除+取余将该正数变成字符串存在buf数组里(逆序,最后带了’\0’),然后把buf里的字符放到str数组里去,注意处理对应关系和负号即可