I have look at adding API function to lite-C and I have come up with this list of API function from the msvcrt DLL.

Of course you can use this code free of charge. I do not know if this is the best way to do it, but it works for me. I have noticed that so many people asked for functions like 'sprintf' and FILE commands like 'fopen' to 'fclose'.

This is all (compatable) functions from the DLL which should be in the Windows System32 folder.

People, please reply if you use it. I will like to know if you find this useful. I would like to know how to improve it!

... So do I get Lite-C free now...? lol!

Code:

/*
MSVCRT DLL - API Functions
By Sheefo :)
*/
#ifndef MSVCRT_LIB
#define MSVCRT_LIB

#define EOF (-1)
#define RAND_MAX 65535

/* Seek method constants */
#define SEEK_CUR 1
#define SEEK_END 2
#define SEEK_SET 0

typedef long size_t;
typedef int fpos_t;

typedef struct {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
} FILE;
FILE *stderr, *stdin, *stdout;

typedef struct {
int quot, rem;
} div_t;
typedef struct {
long quot, rem;
} ldiv_t;

////////////////////////////////////////////////////////////
// Function prototype declarations
////////////////////////////////////////////////////////////
double __cdecl abs (double);
double __cdecl acos (double);
double __cdecl asin (double);
double __cdecl atan (double);
double __cdecl atan2 (double, double);
double __cdecl atof (char *);
int __cdecl atoi (char *);
long __cdecl atol (char *);
void * __cdecl calloc (size_t, size_t);
double __cdecl ceil (double);
void __cdecl clearerr (FILE *);
double __cdecl cos (double);
double __cdecl cosh (double);
div_t __cdecl div (int, int);
double __cdecl exp (double);
double __cdecl fabs (double);
int __cdecl fclose (FILE *);
int __cdecl feof (FILE *);
int __cdecl ferror (FILE *);
int __cdecl fflush (FILE *);
int __cdecl fgetc (FILE *);
int __cdecl fgetpos (FILE *, fpos_t*);
char * __cdecl fgets (char *, int, FILE *);
double __cdecl floor (double);
double __cdecl fmod (double, double);
FILE * __cdecl fopen (char *, char *);
int __cdecl fprintf (FILE *, char *, ...);
int __cdecl fputc (int, FILE *);
int __cdecl fputs (char *, FILE *);
size_t __cdecl fread (void *, size_t, size_t, FILE *);
void __cdecl free (void *);
FILE * __cdecl freopen (char *, char *, FILE *);
double __cdecl frexp (double, int*);
int __cdecl fscanf (FILE *, char *, ...);
int __cdecl fseek (FILE *, long, int);
int __cdecl fsetpos (FILE *, fpos_t*);
long __cdecl ftell (FILE *);
size_t __cdecl fwrite (void *, size_t, size_t, FILE *);
int __cdecl getc (FILE *);
int __cdecl getchar (void);
char * __cdecl getenv (char *);
char * __cdecl gets (char *);
int __cdecl isalnum (int);
int __cdecl isalpha (int);
int __cdecl iscntrl (int);
int __cdecl isdigit (int);
int __cdecl islower (int);
int __cdecl isprint (int);
int __cdecl ispunct (int);
int __cdecl isspace (int);
int __cdecl isupper (int);
long __cdecl labs (long);
double __cdecl ldexp (double, int);
ldiv_t __cdecl ldiv (long, long);
double __cdecl log (double);
double __cdecl log10 (double);
void * __cdecl malloc (size_t);
void * __cdecl memchr (void *, int, size_t);
int __cdecl memcmp (void *, void *, size_t);
void * __cdecl memcpy (void *, void *, size_t);
void * __cdecl memmove (void *, void *, size_t);
void * __cdecl memset (void *, int, size_t);
double __cdecl modf (double, double*);
void __cdecl perror (char *);
double __cdecl pow (double, double);
int __cdecl putc (int, FILE *);
int __cdecl putchar (int);
int __cdecl puts (char *);
int __cdecl rand (void);
void * __cdecl realloc (void *, size_t);
int __cdecl remove (char *);
int __cdecl rename (char *, char *);
void __cdecl rewind (FILE *);
int __cdecl scanf (char *, ...);
void __cdecl setbuf (FILE *, char *);
int __cdecl setvbuf (FILE *, char *, int, size_t);
double __cdecl sin (double);
double __cdecl sinh (double);
int __cdecl sprintf (char *, char *, ...);
double __cdecl sqrt (double);
void __cdecl srand (int);
int __cdecl sscanf (char *, char *, ...);
char * __cdecl strcat (char *, char *);
char * __cdecl strchr (char *, int);
int __cdecl strcmp (char *, char *);
int __cdecl strcoll (char *, char *);
char * __cdecl strcpy (char *, char *);
size_t __cdecl strcspn (char *, char *);
char * __cdecl strerror (int);
size_t __cdecl strlen (char *);
char * __cdecl strncat (char *, char *, size_t);
int __cdecl strncmp (char *, char *, size_t);
char * __cdecl strncpy (char *, char *, size_t);
char * __cdecl strpbrk (char *, char *);
char * __cdecl strrchr (char *, int);
size_t __cdecl strspn (char *, char *);
char * __cdecl strstr (char *, char *);
char * __cdecl strtok (char *, char *);
size_t __cdecl strxfrm (char *, char *, size_t);
double __cdecl strtod (char *, char **);
char * __cdecl strtok (char *, char *);
long __cdecl strtol (char *, char **, int);
double __cdecl tan (double);
double __cdecl tanh (double);
FILE * __cdecl tmpfile (void);
char * __cdecl tmpnam (char *);
int __cdecl tolower (int);
int __cdecl toupper (int);
int __cdecl ungetc (int, FILE *);

void msvcrt()
{
abs = DefineApi("msvcrt!abs");
acos = DefineApi("msvcrt!acos");
asin = DefineApi("msvcrt!asin");
atan = DefineApi("msvcrt!atan");
atan2 = DefineApi("msvcrt!atan2");
atof = DefineApi("msvcrt!atof");
atoi = DefineApi("msvcrt!atoi");
atol = DefineApi("msvcrt!atol");
calloc = DefineApi("msvcrt!calloc");
ceil = DefineApi("msvcrt!ceil");
clearerr = DefineApi("msvcrt!clearerr");
cos = DefineApi("msvcrt!cos");
cosh = DefineApi("msvcrt!cosh");
div = DefineApi("msvcrt!div");
exp = DefineApi("msvcrt!exp");
fabs = DefineApi("msvcrt!fabs");
fclose = DefineApi("msvcrt!fclose");
feof = DefineApi("msvcrt!feof");
ferror = DefineApi("msvcrt!ferror");
fflush = DefineApi("msvcrt!fflush");
fgetc = DefineApi("msvcrt!fgetc");
fgetpos = DefineApi("msvcrt!fgetpos");
fgets = DefineApi("msvcrt!fgets");
floor = DefineApi("msvcrt!floor");
fmod = DefineApi("msvcrt!fmod");
fopen = DefineApi("msvcrt!fopen");
fprintf = DefineApi("msvcrt!fprintf");
fputc = DefineApi("msvcrt!fputc");
fputs = DefineApi("msvcrt!fputs");
fread = DefineApi("msvcrt!fread");
free = DefineApi("msvcrt!free");
freopen = DefineApi("msvcrt!freopen");
frexp = DefineApi("msvcrt!frexp");
fscanf = DefineApi("msvcrt!fscanf");
fseek = DefineApi("msvcrt!fseek");
fsetpos = DefineApi("msvcrt!fsetpos");
ftell = DefineApi("msvcrt!ftell");
fwrite = DefineApi("msvcrt!fwrite");
getc = DefineApi("msvcrt!getc");
getchar = DefineApi("msvcrt!getchar");
getenv = DefineApi("msvcrt!getenv");
gets = DefineApi("msvcrt!gets");
isalnum = DefineApi("msvcrt!isalnum");
isalpha = DefineApi("msvcrt!isalpha");
iscntrl = DefineApi("msvcrt!iscntrl");
isdigit = DefineApi("msvcrt!isdigit");
islower = DefineApi("msvcrt!islower");
isprint = DefineApi("msvcrt!isprint");
ispunct = DefineApi("msvcrt!ispunct");
isspace = DefineApi("msvcrt!isspace");
isupper = DefineApi("msvcrt!isupper");
labs = DefineApi("msvcrt!labs");
ldexp = DefineApi("msvcrt!ldexp");
ldiv = DefineApi("msvcrt!ldiv");
log = DefineApi("msvcrt!log");
log10 = DefineApi("msvcrt!log10");
//malloc = DefineApi("msvcrt!malloc");
memchr = DefineApi("msvcrt!memchr");
memcmp = DefineApi("msvcrt!memcmp");
memcpy = DefineApi("msvcrt!memcpy");
memmove = DefineApi("msvcrt!memmove");
memset = DefineApi("msvcrt!memset");
modf = DefineApi("msvcrt!modf");
perror = DefineApi("msvcrt!perror");
pow = DefineApi("msvcrt!pow");
putc = DefineApi("msvcrt!putc");
putchar = DefineApi("msvcrt!putschar");
puts = DefineApi("msvcrt!puts");
rand = DefineApi("msvcrt!rand");
realloc = DefineApi("msvcrt!realloc");
remove = DefineApi("msvcrt!remove");
rename = DefineApi("msvcrt!rename");
rewind = DefineApi("msvcrt!rewind");
scanf = DefineApi("msvcrt!scanf");
setbuf = DefineApi("msvcrt!setbuf");
setvbuf = DefineApi("msvcrt!setvbuf");
sin = DefineApi("msvcrt!sin");
sinh = DefineApi("msvcrt!sinh");
sprintf = DefineApi("msvcrt!sprintf");
sqrt = DefineApi("msvcrt!sqrt");
srand = DefineApi("msvcrt!srand");
sscanf = DefineApi("msvcrt!sscanf");
strcat = DefineApi("msvcrt!strcat");
strchr = DefineApi("msvcrt!strchr");
strcmp = DefineApi("msvcrt!strcmp");
strcoll = DefineApi("msvcrt!strcoll");
strcpy = DefineApi("msvcrt!strcpy");
strcspn = DefineApi("msvcrt!strcspn");
strerror = DefineApi("msvcrt!strerror");
strlen = DefineApi("msvcrt!strlen");
strncat = DefineApi("msvcrt!strncat");
strncmp = DefineApi("msvcrt!strncmp");
strncpy = DefineApi("msvcrt!strncpy");
strpbrk = DefineApi("msvcrt!strpbrk");
strrchr = DefineApi("msvcrt!strrchr");
strspn = DefineApi("msvcrt!strspn");
strstr = DefineApi("msvcrt!strstr");
strtod = DefineApi("msvcrt!strtod");
strtok = DefineApi("msvcrt!strtok");
strtol = DefineApi("msvcrt!strtol");
strxfrm = DefineApi("msvcrt!strxfrm");
tan = DefineApi("msvcrt!tan");
tanh = DefineApi("msvcrt!tanh");
tmpfile = DefineApi("msvcrt!tmpfile");
tmpnam = DefineApi("msvcrt!tmpnam");
tolower = DefineApi("msvcrt!tolower");
toupper = DefineApi("msvcrt!toupper");
ungetc = DefineApi("msvcrt!ungetc");
}
#endif