C语言不调用stdlib.h写整型转换为字符,double类型转字符的函数代码

因为是要用在单片机上面,所以不能使用sprintf(),求解,分值可追加200,注意C语言不是C++。
在单片机上面操作尽量忽略小数点的操作,即可乘以一个系数强制成为int类型,保留小数点后几位。谢谢各位,自己写出来了,如果谁需要此函数的,可以联系本人

//将整型转换成字符数组
char *intToChar(int n,char *str,int isFloat)
{
int m,l=0,i;
m=n;
while(m!=0)
{
m=m/10;
l++;
}
for(i=l;i>=0;i--)
{
if(i==l)
{
str[i]='\0';
}
else
{
str[i]=n%10+48;
n=n/10;
}
}
if (isFloat==1)
{
str[l]='.';
str[l+1]='\0';
}
return str;
}
//将浮点型转换为字符数组,先将整数部分添加到要返回的数组中,再将小数部分连接上
char *floatToChar(float num,char *str){
int n=num;
if (n>num)
{
n=n-1;
}
float m;
int l;
m=num-n;
m*10;
while (m!=(int)m)
{
m=m*10;
}
l=m;
intToChar(num,str,1);
char temp[10];
intToChar(l,temp,0);
strcat(str,temp);
return str;
}
希望这两个函数可以帮到你
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-06
呵呵;
就比如:
int qq;
char a,b;
a=qq/256;
b=qq%256;
double型同理;
不过,小数点处理不了。如果要处理,
如果小数点后面有3个数。可以先增大1000倍;
然后像整形那样处理。
单片机的基本都是这样处理的。
呵呵!
第2个回答  2013-01-06
其中:value为需要转换的数
void binary_to_ascii(double value)
{
double quotient;

quotient = value / 10;
if (quotient != 0)
{
binary_to_ascii(quotient, a);
}
putchar("0123456789"[value%a]);
}
第3个回答  2013-01-06
用循环,除以10追问

这些原理清楚,但是判断数据几位呢,单片机不接受递归,我自己写了个递归函数,在VC可以运行的,你若能写出来,贴出来看一下

相似回答
大家正在搜