#include #include #include #define LOGFILE "debug.log" #define maxlines 50 int linecount; int charcount = 0 ; char debugbuffer[maxlines * 50]; void debugPrint(char *fmt,...){ FILE *debuglogfile; va_list ap; char *p,*sval; int ival; double dval; va_start(ap,fmt); for (p = fmt; *p; p++){ if (*p != '%'){ debugbuffer[charcount++] = *p; continue; } switch (*++p){ case 'd': ival = va_arg(ap,int); sprintf (&debugbuffer[charcount],"%d",ival); charcount = strlen(debugbuffer) + 1; break; case 'f': dval = va_arg(ap,double); sprintf (&debugbuffer[charcount],"%f",dval); charcount = strlen(debugbuffer) + 1; break; case 's': for (sval = va_arg(ap,char *); *sval ; sval++) strcat(&debugbuffer[charcount++],va_arg(ap,char *)); break; } } va_end(ap); debugbuffer[charcount++]='\r'; debugbuffer[charcount++]='\n'; debugbuffer[charcount]=0; linecount++; //If we have reached the maximum defined number of lines, //we write to a file and reset the counters if (linecount >= maxlines){ debuglogfile = fopen (LOGFILE,"a"); fwrite (debugbuffer,strlen(debugbuffer),1,debuglogfile); //fflush (debuglogfile); fclose (debuglogfile); linecount = 0; charcount = 0; } } int main (int argc,char **argv){ int i; for (i=0;i<1000;i++) debugPrint("Hello, this is a test number %d \r\n", random()); return 0; }