int _fprintf(FILE *fp, const char *s, ...) { va_list args; int res; int c,i; c = 0; va_start(args, s); for(c = 0; c < strlen(s); ++c) { if(s[c] == '%') { char *p; int j,k; ++c; switch(s[c]) { case 's': for(p = va_arg(args, char *), i = 0; i < strlen(p); ++i) _fputc(p[i], fp); p = NULL; break; case 'd': j = va_arg(args, int); if((p = p_itoc(j)) == NULL) { _fprintf(stderr, "Error: could not convert number to string.\n"); continue; } p = p_rnum(p); while(*p != 0) _fputc(*p++, stdout); break; case 'c': k = va_arg(args, int); _fputc(k, stdout); break; default: _fprintf(stderr, "%d: needs an argument.\n", c); } continue; } else if(s[c] == '\\') {
int fputc(int character, FILE *stream) { //printf("INTERCEPTED Fputc\n"); clock_t start = clock(); int ret = _fputc(character,stream); clock_t end = clock(); double called_time = (double)(start-program_start)/(double)(CLOCKS_PER_SEC); double exec_time = (double)(end-start)/(double)(CLOCKS_PER_SEC); fprintf(logFile,"%lf %lf fputc %d %p = %d\n",called_time,exec_time,character,stream,ret); return ret; }