sprintf实现命令行的可变参数?该如何解决

sprintf实现命令行的可变参数?
要组成一个字符串比如:
./hello -dA -dB -dC

A B C是可选可不选的选项,也就是说可有可无。
程序中我用了3个bool变量 A B C,来代替用户有没有用,比如:如果A为false那么就没有-dA这个选项。
sprintf(DCmd, "./hello -d%s -d%s -d%s ", \
          A ? "A" : NULL,
          B ? "B" : NULL,
                C ? "C" : NULL);
可是结果不是我想要的。应该怎么做才能够实现呢?
------解决方案--------------------
用strcat拼字符串吧
------解决方案--------------------
"./hello %s %s %s"
A ? "-dA" : ""
B ? "-dB" : ""
怎么样.