样例:比如命令行 “querycmd -n mysql -l left”
那我们要取出上述命令中的某个参数,我们都可以使用下面getargn 这个函数。
比如,上述的命令行中的各个参数是以“空格”来分割的。
那我们想取出第三个参数,我们可以这样使用这个函数:
char *buf="querycmd -n mysql -l left";
char *dstbuf[256] = {0};
//单引号之内是一个空格,取出的第三个参数存放在dstbuf中。
getargn(dstbuf, buf, 3, ' ');
那这个函数的执行结果是:dstbuf中的字符串是“mysql”
//-------------------函数定义------------------------
/*
bufdst,要存放获取到参数的首地址。
buf,命令行存放位置的首地址。
n,取第几个参数
sbl,以什么分隔,如果以逗号为分隔,可以传入','
*/
int getargn(char *bufdst, const char *buf, unsigned int n, char sbl)
{
int max_argsn=0;
int arglen=0;
const char *ptrprev=buf;
if((buf==NULL)||(bufdst==NULL)||(n==0)||(*buf==sbl))
return 1;
while(*buf!='\0')
{
if(*buf==sbl)
{
max_argsn++;
if(n==max_argsn)
{
arglen=buf-ptrprev;
strncpy(bufdst,ptrprev,arglen);
*(bufdst+arglen)='\0';
}
ptrprev=buf+1;
}
buf++;
}
if(n>(max_argsn+1))
return 1;
if((max_argsn+1)==n)
{
arglen=buf-ptrprev;
strncpy(bufdst,ptrprev,arglen);
*(bufdst+arglen)='\0';
}
return 0;
}