我正在编写一个非常简单的程序代码。
首先,它有“-num”选项作为第二个argc。如果您在第3个argc中输入任何内容,程序将只输入第3个argc。
以下是输入和输出的示例。
输入命令行1:
./test -num
输出1
-num
输入命令行2:
./test -num AnythingHere
输出2
-num 3rdArgcEntered
我还想让以下命令行使用粘贴的argc(-num和AnythingHere粘在一起)来提供与输出2相同的输出:
./test -numAnythingHere
我希望获得的输出是:
-num 3rdArgcEntered
但我获得了:
None
这是我目前正在处理的源代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
if (!strcmp(argv[1], "-num"))
{
printf("-num ");
if(argc==3){
printf("3rdArgcEntered");
}
}
else
{
printf("None");
}
printf("\n");
return 0;
}
答案 0 :(得分:1)
一点垃圾..
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
/* doesnt check when args are not entered */
char *tmp = argv[1];
char buff[5];
/* copy -num, doesnt check */
memcpy(buff, tmp, 4);
buff[4] = '\0';
if (!strcmp(buff, "-num"))
{
printf("-num ");
/* larger than -num */
if(argc==3 || strlen(tmp) > 4 ){
printf("3rdArgcEntered");
}
}
else
{
printf("None");
}
printf("\n");
return 0;
}
答案 1 :(得分:0)
你的程序不会影响参数的传递方式;显然main
已在main
开头调用strtok
。您需要自己解析每个参数,或者使用为您执行此操作的库。要自己解析它们,您可以查看sscanf
或getopt
,或迭代字符。但是通常更喜欢更具体的库,例如{{1}},因为它可以让您的程序以与其他命令行实用程序一致的方式运行。