使用main参数向量

问题描述

我正在尝试使用main()参数向量来获取三个选项,它输出所有三个结果。 为什么它行不通?

#include <ctype.h>
#include <stdio.h>
void output_1(char *str);
void output_2(char *str);
void output_3(char *str);
int main(int argc,char *argv[])
{
    char str[40];

    gets(str);
    
    if (argv[1]="-p")
    {
        output_1(str);
    }
    if (argv[1]="-u")
    {
        output_2(str);
    }
     if (argv[1]="-l")
    {
        output_3(str);
    }
}

output_1 / 2/3的定义无关紧要。

解决方法

C字符串比较使用strcmp
这是一个有关如何测试命令行参数并确保解析可靠的代码示例(需要检查参数数量)。但是,解析参数最好使用getopt功能来完成。

#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{

    if (argc != 2)
    {
        printf("missing arguments");
        return -1;
    }   
    if (!strcmp(argv[1],"-p"))
    {
       printf("-p");
    }
    else
    {
         printf("unknwon arg %s",argv[1]);
    }
}