欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
跨平臺移植printf
[打印本頁]
作者:
xiaos
時間:
2015-4-10 17:18
標題:
跨平臺移植printf
在MUC中只要給出 putc() 向顯示器輸出一個字符 的函數的實現 就可以吧 printf() 的功能移植上去了
#include "stdio.h"
#include "stdarg.h"
void put_str(char *str)
{
while(*str)
{
putc(*str,stdout);
str++;
}
}
void put_int(int num)
{
char s[15];
int temp=num;
char i=0,cnt;
if(num==0)
{
putc('0',stdout);
return;
}
while(temp)
{
i++;
temp/=10;
}
if(i>14)
return;
s[i]=0;
for(cnt=i-1;cnt>=0;cnt--)
{
s[cnt]=num%10+'0';
num/=10;
}
put_str(s);
}
void put_float(double num)
{
double temp=num;
char j=0;
long temp1,temp3;
double temp2;
int i=0,cnt;
char s[25];
if(num==0)
{
put_str("0.000000");
return;
}
temp1=(long)temp;
temp2=temp-temp1;
temp2*=1000000;
if((long)temp2==0)
{
put_int(temp1);
return;
}
while(temp1)
{
i++;
temp1/=10;
}
temp1=(long)temp;
temp3=(long)temp2;
while(temp3)
{
i++;
temp3/=10;
}
temp3=(long)temp2;
s[i+1]=0;
for(cnt=i;cnt>=0;cnt--)
{
if(temp3==0&&j==0)
{
s[cnt]='.';
j++;
continue;
}
if(temp3!=0)
{
s[cnt]=temp3%10+'0';
temp3/=10;
}
else if(j==1)
{
s[cnt]=temp1%10+'0';
temp1/=10;
}
}
put_str(s);
}
void my_printf(char *fm,...)
{
va_list ap;
char *p, *sval;
int ival;
double dval;
va_start(ap, fm);
for(p=fm;*p;p++)
{
if(*p!='%')
{
putc(*p,stdout);
continue;
}
switch(*++p)
{
case 'd':
ival = va_arg(ap, int);
put_int(ival);
break;
case 'f':
dval = va_arg(ap, double);
put_float(dval);
break;
case 's':
sval = va_arg(ap, char *);
put_str(sval);
break;
default:
putc(*p,stdout);
break;
}
}
}
int main()
{
my_printf("%f",123.0);
printf("\n");
return 0;
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1