您的位置:首页 > 其它

分解命令行字符串为argc和argv

2011-12-06 11:27 393 查看
有时候需要把一个空格分隔的长字符串分解为参数个数和参数指针,一种方法是使用strtok()函数,在内核里面没有找到这个函数,所以自己写了一个分解长字符串的函数。

int parse_argv(char* str, int*argc, char** argv, int number);

int parse_argv(char* str, int* argc, char** argv, int number)
{
char *p;
int num=0;
int word_start = 1;

if(argc == NULL || argv == NULL)
return -1;

p=str;

while(*p){
if((*p == '\r') || (*p == '\n')){
*p = '\0';
break;
}
if((*p == ' ') || (*p == '\t')){
word_start = 1;
*p = '\0';
p++;
continue;
}
if(num >= number)
break;

if(word_start){
argv[num++] = p;
word_start = 0;
}
p++;
}

*argc = num;

return 0;
}

使用方法:

void test()
{
#define MAX_CMD_ARGV 5
int argc = 0;
char test_str = "This is a string";
char *argv[MAX_CMD_ARGV];
int n;

parse_argv(test_str, &argc, argv, MAX_CMD_ARGV);
for(n=0;n<argc;n++){
printf("argv[%d]='%s'\n", n, argv
);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cmd null string