分解命令行字符串为argc和argv
2011-12-06 11:27
393 查看
有时候需要把一个空格分隔的长字符串分解为参数个数和参数指针,一种方法是使用strtok()函数,在内核里面没有找到这个函数,所以自己写了一个分解长字符串的函数。
int parse_argv(char* str, int*argc, char** argv, int number);
使用方法:
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
);
}
}
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
);
}
}
相关文章推荐
- 一个能把命令行解析为argc和argv数组的函数
- 命令行变元(argc,argv[])
- 分解命令行字符串
- 关于Win32 SDK(C++)的命令行获取,通过__argc和__argv
- argv[1]只获取了一个字符,不能取得整个字符串
- main函数的参数argc与argv
- windows 命令行查找字符串 和 文件(find & findstr & for)
- argc 和 argv 的使用
- main函数中的argc和argv
- 从命令行中输入一个字符串,要求从中随机选择6个字符
- main( intmain(int argc,char *argv[]) argc ,char*argv[ ] )
- 分解字符串方法
- redis命令行查看中文显示16进制的字符串
- 【51CTO/BBS】请教: SQL里有没有字符串分解Split的函数??
- 分解全路径的文件名,字符串
- 字符串分解连接函数
- [C/C++基础知识] main函数的参数argc和argv
- 主函数main(argc,**argv)中两个参数的用法
- oracle中字符串分解为数组并遍历数组插入表中
- main 函数argc , argv 主命令行参数