求助:这段带main函数参数(argc,argv)的程序怎么理解?

来源:百度知道 编辑:UC知道 时间:2024/09/24 19:26:03
int main (int argc, char *argv[])
{
……
char *progname = argv[0];
char *modefileName = NULL;
……
Word16 dtx = 0;
int useModeFile = 0;
……
while (argc > 1)
{
if (strcmp(argv[1], "-dtx") == 0)
{
dtx = 1;
}
else if (strncmp(argv[1], "-modefile=", 10) == 0)
{
useModeFile = 1;
modefileName = argv[1]+10;
}
else
break;
argc--;
argv++;
}
}
不理解程序是怎么执行的,请高手指教
1、字符串比较:strcmp(argv[1], "-dtx") == 0
strncmp(argv[1], "-modefile=", 10) == 0
为什么前边都加'-'啊?就按一字符理解还是有其他意思?而且dtx前边已经有定义,和这个相关吗?
2、modefileName = argv[1]+10;什么意思?argv[1]是指向main函数参数的第二个参数(字符串)的指针(确切是指向该字符串的首字符),+10是指向字符串的第11个字符吗?不知道这样理解对不?怎么解释?
3、总觉得while循环里的argv++没什么用。++后就变成argv[2]、argv[3]……,以此类推,但程序里只有arg

再仔细找书上看看argc和argv的含义吧!
对本例来说,假设程序名为xyx,则命令行可能有一下几种形式:
xyz
xyz -dtx
xyz -modefile=filename
xyz -dtx -modefile=filename
xyz -modefile=filename -dtx
...

针对以上几种情况,你仔细想想argc和argv分别是什么吧

1、“-”按字符理解,是自定义的参数格式
2、指第10个字符以后的字符串
3、不理解