具体实现没啥好分析的,源码里的注释写的很清楚,哈哈。
函数作用:将line 指向的
输入参数:
char * line —— 被分析的字符串
char *argv[] —— 每个元素都是一个字符串(char *),用来返回解析结果。这是一个指针数组,一些理解可以参考这里。
返回值:
字符串的个数
实例:
line -> “md.w 0”
运行结果:
返回值为 2
argv[0] -> md.w
argv[1] -> 0
int parse_line (char *line, char *argv[])
{
int nargs = 0;
while (nargs < CFG_MAXARGS) {
/* skip any white space */
while ((*line == ' ') || (*line == '\t')) {
++line;
}
if (*line == '\0') { /* end of line, no more args */
argv[nargs] = NULL;
return (nargs);
}
argv[nargs++] = line; /* begin of argument string */
/* find end of string */
while (*line && (*line != ' ') && (*line != '\t')) {
++line;
}
if (*line == '\0') { /* end of line, no more args */
argv[nargs] = NULL;
return (nargs);
}
*line++ = '\0'; /* terminate current arg */
}
printf ("** Too many args (max. %d) **\n", CFG_MAXARGS);
return (nargs);
}