将可变数量的参数传递给C函数

时间:2013-04-24 17:10:39

标签: c sockets methods

不知道如何最好地描述这个,但在这里解释不好。 我希望能够用printf I.E做我能做的事情 printf("Variable:%@",astring);

调用以下方法我会运行write_sock(sock,"my message but i want a variable in here a well");

这有意义吗?

static void write_sock(int sock, const char *msg)
{
    int len = strlen(msg);
    if (write(sock, msg, len) != len)
    {
        perror("short write on socket");
        exit(1);
    }
}

2 个答案:

答案 0 :(得分:1)

你在谈论变量参数的使用......(注意:vasprintf()可能有也可能没有......我只是在这里用它来说明)

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

static void write_sock(int sock, const char *msg, ... )
{
    va_list args;
    va_start( args, msg );
    char* newMsg;

    vasprintf( &newMsg, msg, args );

    int len = strlen(newMsg);
    if (write(sock, newMsg, len) != len)
    {
        perror("short write on socket");
        exit(1);
    }

    free( newMsg );

    va_end( args );
}

答案 1 :(得分:0)

只需使用sprintf(3)

char buffer[100];
sprintf(buffer, "Variable: %d", x);
write_sock(sock, buffer);