解析命令行参数



#include <stdio.h>
#include<string.h>


#define CFG_MAXARGS 10
//parse_line函数参考uboot源码
static 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	 */
	}

	return (nargs);
}
//解析命令行参数
int main()
{
	int argc,i;
  char buf[1024]="set_network 2 ssid \"wifiUncleWang\"";
  char *argv[CFG_MAXARGS];

//  strncpy(buf, cmd, 1024);
//  buf[1023] = '\0';
  
  argc = parse_line(buf, argv);
  
  for (i=0; i < argc; i++)  
 	 	printf("\n %s \n",argv[i]);
   
   return 0;
}


运行结果:



 set_network 


 2 


 ssid 


 "wifiUncleWang" 






posted @ 2018-01-01 11:59  隔壁王叔叔a  阅读(155)  评论(0编辑  收藏  举报