欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C 可变参数 自定义printf

程序员文章站 2022-07-15 09:15:28
...
#include <stdarg.h>
void out(const char *format, ...)
{
    va_list arglist;
    va_start(arglist, format);
    int len = strlen(format);
    char *s = new char[len + 1];
    memset(s, 0, len + 1);
    strcpy(s, format);
    for (int i = 0; i < len; i++){
        if (!s[i])
            break;
        if (s[i] == '%'){
            i++;
            char c = s[i];
            if (c == 'd')
                printf("%d", va_arg(arglist, int)) ;
            else if (c == 'c')
                printf("%c", va_arg(arglist, int)) ;
            else if (c == 'f')
                printf("%f", va_arg(arglist, double)) ;
            else if (c == 's')
                printf("%s", va_arg(arglist, char *)) ;
            else
            {
                i--;
                putchar(s[i]);
            }
            continue;
        }
        putchar(s[i]);
    }
    va_end(arglist);
}

int main()
{
    out("这是一个整形 %d\n这是一个字符 %c\n这是一个字符串 %s\n这是一个浮点型 %f\n",
        99, 'c', "string", 3.1415926);

    return 0;
}

C 可变参数 自定义printf

相关标签: c语言