sprintf用于使用变量进行格式连接

时间:2019-06-06 08:27:19

标签: c

我可以使用sprintf使用宏来连接字符串,如下所示:

#define ATTR_FORMAT "\"%s\":\"%s\""
#define ATTR_FORMAT_SET "\"%s\":[%s]"

sprintf(demoStr, "{" ATTR_FORMAT "}", "Hello", "world");
printf("demoStr=%s\n", demoStr);

我得到了正确的输出:demoStr={"Hello":"world"}

但是当我将宏分配给如下所示的变量时:

#define ATTR_FORMAT "\"%s\":\"%s\""
#define ATTR_FORMAT_SET "\"%s\":[%s]"

const char *fmt = NULL;
int iTest = 1;
if (iTest == 1) {
    fmt = ATTR_FORMAT;
} else {
    fmt = ATTR_FORMAT_SET;
}

sprintf(demoStr, "{" fmt "}", "Hello", "world");
printf("demoStr=%s\n", demoStr);

我希望输出demoStr={"Hello":"world"}

但是当我使用gcc编译代码时,出现以下错误:

`error: expected ')' before 'fmt'`

如何解决此问题,有人可以给我提示或显示一些代码吗?

0 个答案:

没有答案