0

我正在制作一个非常简单的程序代码。

首先,它有选项“-num”作为第二个 argc。如果您在 3rd argc 中输入任何内容,程序将简单地说输入了 3rd 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;
}
4

2 回答 2

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;
}
于 2014-03-30T02:02:10.323 回答
0

您的程序不能影响参数的传递方式;显然main已经在开头调用了main。您需要自己解析每个参数,或者使用为您解析的库。为了自己解析它们,您可以查看strtokorsscanf或遍历字符。但是更具体的库(例如getopt.

于 2014-03-30T00:58:28.813 回答