怎么随心所欲给指针数组赋值字符串

如何随心所欲给指针数组赋值字符串
在c语言中,可以给一个数组直接赋值字符串,像下面的形式:char  yijuhua[ ] = "必须是一串常量字符吗?"  ,请看下面的代码——
[code=c][#include "stdio.h"
char *dapu[4];

void main()
{
   int a=3,b=2;
   dapu[0]="车3退2";
   printf("%s",dapu[0]);  
}/code]

在给dapu[0]赋值字符串时,双引号的内容必须都得是常量字符吗?有没有不确定的可选择余地【类似自动变量】呢?比如我瞎想的形式——【 dapu[0] = ("车%d退%d",a,b); 】,输出的同时也是“ 车3退2 ”呢??

------解决方案--------------------
唉~
为什么 我这么 说了 还是 弄不明白呢?
无论 你想 弄 什么 字符串, 只要  你想让他变化, 那么 你就 不可能 使用 静态区的字符串。
那么 你该怎么办?
就像 我 第一个 
char dapu[MAX_LEN];
 
这么写的 , 把你 想要 写的 字符串 放在里面 至于 你想 写 什么样子的 随便你, 我学你 一句话
这样说可能还是难以明白,这样吧,你可以 使用 sprintf  等 不列举了 ,格式化 输出到里面, 
根据 你的 程序, 你或许想 弄一系列 字符串 怎么办?
你可以 malloc 一块儿 足够大的 内存, 组织好 你的 字符串 , 写到 里面 也可以。
或许 你很喜欢 复杂的 东西, 那么, 你可以 建立 链表, 把 你的 字符串 一个一个 的 串号。
这都是解决办法,

------解决方案--------------------
不要把简单的问题复杂化。
#include <stdio.h>
void main()
{
   int a = 3, b = 2;
   sprintf(dapu[0], "车%d退%d", a, b);
   printf("%s",dapu[0]);  
}/code]
------解决方案--------------------
估计楼主是想这么用?
outStr(int name,int dir,int x,int y)
{
   const char *nameStr[]={"车","马","炮"};
   const char *formatStr[]={"%s%d进%d","%s%d退%d"};
   printf(formatStr[dir],nameStr[name],x,y);
}
更进一步的,可以递次的动态生成格式串,但为了在格式串中产生%,需要显示使用%%: