00001
00007
00008
00009 #include <vararg.h>
00010
00011 static char sprntf(char **, char);
00012 extern void _doprnt(char *, va_list, int (*)(int, int), int);
00013
00019 int sprintf(char *str, char *fmt, ...)
00020 {
00021 va_list ap;
00022 char *s;
00023
00024 s = str;
00025 va_start(ap, fmt);
00026 _doprnt(fmt, ap, sprntf, (int)&s);
00027 va_end(ap);
00028 *s++ = '\0';
00029
00030 return ((int)str);
00031 }
00032
00036 static char sprntf(char **cpp, char c)
00037 {
00038 return (*(*cpp)++ = c);
00039 }
00040
00041