数字转字符串
这里首先用到一个数组逆置函数如下
void reverse(char *arr)//逆置
{
char *p = arr;
char tmp;
while(*p != '\0')
{
p ++;
}
for(--p;arr < p;arr++,p--)
{
tmp = *arr;
*arr = *p;
*p = tmp;
}
}
将arr数组逆置
因为将一个数字转成字符串,若果是从右往左依次获得,操作较容易,所以以此得到的字符串是数字的逆序字符串,所以要逆置,才可得到顺序
代码如下
void myitoa(char *arr,const int n,const int ind)//数字转字符串
{
int t = n;
int a;
int i = 0;
const char *table = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";
while(t != 0)
{
a = t%ind;
arr[i++] = table[a];
//i++;
t /= ind;
}
arr[i] = '\0';
reverse(arr);
}
将要保存字符串的数组arr传进来方便操作,待转换数字n,带转换进制ind,制作一个表table,方便转换,使得数字进行取余操作直接根据结果查找对应下标的表元素,进行生成字符串
字符串转数字
int myatoi(char *arr,const int ind)//表示数字的字符串转数字,arr中的数字是进制为ind的数字
{
int sum = 0;
int a;
while(*arr != '\0')
{
if((*arr-'0')>9)
{
a = *arr - 'A' + 10;
}
else
{
a = *arr - '0';
}
sum = sum * ind + a;
*arr ++;
}
return sum;
}
这里默认字符串为表示合法数字的字符串,ind为该字符串形式数字的进制,默认全转为10进制数字保存在sum中返回