问答题 如何把数字转换成字符串
【正确答案】
【答案解析】C语言中常用到字符串与数字之间的相互转换,常见的此类库函数有atof(字符串转换成浮点数)、atoi(字符串转换成整型数)、atol(字符串转换成长整型数)、itoa(整型数转换成字符串)、ltoa(长整型数转换为字符串)等。
为了考查求职者对基本功的掌握,在程序员的面试笔试中经常会见到此类题目,让求职者自定义此类函数的实现,此类题目虽然难度不大,但是需要认真仔细对待。
以自定义Myatoi()与Myitoa()函数为例,分别实现自定义字符串转换为整型数函数与自定义整型数转换为字符串函数。以下为自定义Myatoi()函数的实现以及测试代码。
#include<stdio.h>
int Myatoi(char* str)
{
if(str==NULL)
{
printf("Invalid Input");
return-1;
}
while(*str=="")
{
str++;
}
while((*str==(char)0xA1)&&(*(str+1)==(char)0xA1))
{
str+=2;
}
int nSign=(*str=="-")?-1:1;∥确定符号位
if(str=="+"‖*str=="-")
{
str++;
}
int nResult=0;
while(*str>="0"&& *str<="9")
{
nResult=nResult*10+(*str-"0");
str++;
}
return nResult*nSign;
}
int main()
{
printf("%d/n",Myatoi("12345"));
return 0;
}
程序输出结果:
12345
以下为自定义Myitoa函数的实现以及测试代码:
#include<stdio.h>
char* Myitoa(int num)
{
char str[1024];
int sign=num,i=0,j=0;
char temp[11];
if(sign<0)
{
num=-num;
};
do
{
temp[i]=num%10+"0";
num/=10;
i++;
}while(num>0);
if(sign<0)
{
temp[i++]="-";
}
temp[i]="/0";
i--;
while(i>=0)
{
str[j]=temp[i];
j++;
i--;
}
str[j]="/0";
return str;
int main()
{
printf("%s/n",Myitoa(-12345));
return 0;
}程序输出结果:
-12345