C中的函数具有无限的参数?

Pra*_*eep 6 c

我想用C语言定义一个函数,它可以接受任意数据类型的无限数量的参数.例如:printf(),scanf(),等.

有什么想法吗?

Pra*_*rav 9

要在C中使用可变数量的参数,您需要包含标题

#include <stdarg.h>
Run Code Online (Sandbox Code Playgroud)

printf() 在C中是一个带有可变数量参数的函数示例.

int printf(const char *fmt, ...)
Run Code Online (Sandbox Code Playgroud)

更多信息在这里


dan*_*n04 5

将函数声明为采用...最后一个参数.您需要使用宏<stdarg.h>来访问参数作为va_list.

如果你只是想要的东西"一样printf,但有一点额外的行为",那么你就可以通过va_listvprintf,vfprintf或者vsprintf.

#include <stdarg.h>
#include <stdio.h>
#include <time.h>

#ifdef __GNUC__
    __attribute__((format(printf, 1, 2)))
#endif
void PrintErrorMsg(const char* fmt, ...)
{
    time_t     now; 
    char       buffer[20];
    va_list    args;

    va_start(args, fmt);
    time(&now);
    strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", gmtime(&now));
    fprintf(stderr, "[%s] ", buffer);
    vfprintf(stderr, fmt, args);
    fputc('\n', stderr);
    va_end(args);
}
Run Code Online (Sandbox Code Playgroud)