Code: Select all
void Printf(unsigned char forecolor,unsigned char backcolor,char *fmt,...)
{
va_list args;
char buffer[50];
va_start(args,fmt);
Sprintf(buffer,fmt,args);
Puts(buffer,forecolor,backcolor);
}
Code: Select all
void Sprintf(char *buf,char *fmt,...)
{
va_list args;
va_start(args,fmt);
while(1)
{
if(*fmt=='\0')
{
break;
}
else
{
if(*fmt=='%' && (*fmt++)=='d')
{
strcpy(buf,(char*)itoa(va_arg(args,int)));
}
else
if(*fmt=='%' && (*fmt++)=='c')
{
strcpy(buf,(char*)va_arg(args,int));
}
else
if(*fmt=='%' && (*fmt++)=='s')
{
strcpy(buf,va_arg(args,char*));
}
else
if(*fmt=='%' && (*fmt++)=='%')
{
strcpy(buf,"%");
}
else
{
strcpy(buf,*fmt);
}
fmt++;
}
}
}
Code: Select all
char* itoa(int n)
{
int i=0;
int j;
char s[10];
char u[10];
do
{
s[i++]=(char)( n%10+48 );
n-=n%10;
}
while((n/=10)>0);
for (j=0;j<i;j++)
{
u[i-1-j]=s[j];
}
u[j]='\0';
return u;
}
Code: Select all
#include "kernel/video.h"
void _main( void* mbd, unsigned int magic )
{
int num=5;
clrscr();
Puts("Hello world\n",WHITE,BLACK);
Printf(WHITE,BLACK,"Num is %d",num);
}
How do I fix my Printf/Sprintf functions?Hello world
(two weird characters here)