- 论坛徽章:
- 0
|
int func(const char *path,const char *arg,...)
{
//to simplify argv
char argv[ARGV_MAX][ARGV_BUF_MAX];
int argc = 0;
va_list va;
va_list ap;
int retval;
va_start(ap, format);
char *cur = arg;
char *tmp;
while(argc < ARGV_MAX && cru) {
tmp = argv[argc];
while(*cur != ' ' && tmp-argv[argc] < ARGV_BUF_MAX - 1) {
switch (*cur) {
case '\0':
*tmp = '\0';
break;
case '%':
if (*cur == 'd') {
int iv = va_arg(ap,int);
sprintf(tmp,"%d",iv);
while(*tmp)
++tmp;
} else if (*cur == 's') {
char *sv = va_arg(ap,char *);
sprintf(tmp,"%s",iv);
while(*tmp)
++tmp;
} //else ...//other
else {
*tmp++ = '%';
*tmp = *cur;
}
break;
case ' ':
*tmp == '\0';
--cru;
break;
default :
*tmp = *cru;
}
}
if (tmp - argv[argc] >= ARGV_BUF_MAX)
*tmp == '\0';
++argc;
}
}
上面抄的,突然发现直接vsprintf就可以了。不明白你需要什么 |
|