c语言:printf系列的函数

/**
 *----------------------------stdio.h---------------------------------------
 *  int printf(const char *format, ...)
 *  int fprintf(FILE *stream, const char *format, ...)
 *  int sprintf(char *str, const char *format, ...)
 *  int snprintf(char *str, size_t size, const char *format, ...)
 *
 * --------------------------stdarg.h---------------------------------------
 *  int vprintf(const char *format, va_list ap)
 *  int vfprintf(FILE *stream, const char *format, va_list ap)
 *  int vsprintf(char *str, const char *format, va_list ap)
 *  int vsnprintf(char *str, size_t size, const char *format, va_list ap)
 */
#include <stdio.h>
#include <stdarg.h>

int _vprintf(const char *fmt, ...){
        int ret;
        va_list ap;
        va_start(ap, fmt);
        ret = vprintf(fmt, ap);
        va_end(ap);
        return ret;
}

int _vfprintf(const char *fmt, ...){
        int ret;
        va_list ap;
        va_start(ap, fmt);
        ret = vfprintf(stdout, fmt, ap);
        va_end(ap);
        return ret;
}

int _vsprintf(const char *fmt, ...){
        char buf[513];
        int ret;
        va_list ap;
        va_start(ap, fmt);
        ret = vsprintf(buf, fmt, ap);
        printf("%s", buf);
        va_end(ap);
        return ret;
}

int _vsnprintf(const char *fmt, ...){
        char buf[513];
        int ret;
        va_list ap;
        va_start(ap, fmt);
        ret = vsnprintf(buf, sizeof(buf),fmt, ap);
        printf("%s", buf);
        va_end(ap);
        return ret;
}

int main(){
        int ret;
        char buf[512];

        //printf
        ret = printf("%d---%s
", 1, "printf");
        printf("ret = %d
", ret);

        //fprintf
        ret = fprintf(stdout, "%d---%s", 2, "fprintf");
        printf("ret = %d
", ret);

        //sprintf
        ret = sprintf(buf, "%d---%s", 3, "sprintf");
        printf("%s, ret = %d
", buf, ret);

        //snprintf
        ret = snprintf(buf, sizeof(buf), "%d---%s", 4, "snprintf");
        printf("%s, ret = %d
", buf, ret);

        //vprintf
        ret = _vprintf("%d---%s
", 5, "vprintf");
        printf("ret = %d
", ret);

        //vfprintf
        ret = _vfprintf("%d---%s
", 6, "vfprintf");
        printf("ret = %d
", ret);

        //vsprintf
        ret = _vsprintf("%d---%s
", 7, "vsprintf");
        printf("ret = %d
", ret);

        //vsnprintf
        ret = _vsnprintf("%d---%s
", 8, "vsnprintf");
        printf("ret = %d
", ret);
}
View Code