【问题标题】:C Arguments Not Working?C 参数不起作用?
【发布时间】:2010-02-16 10:53:26
【问题描述】:

为什么这不起作用? 当我尝试使用 -l 或 -s 作为第一个参数时,if 语句不使用。他们总是去 else 语句。

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    if (argv[1] == "-l")
    {
        printf("Yay!\n");
    }
    else if (argv[1] == "-s")
    {
        printf("Nay!\n");
    }
    else
    {
        printf("%s\n", argv[1]);
    }
        return 0;
}

【问题讨论】:

  • 你如何尝试运行它,会发生什么?
  • “不工作”是什么意思?输入是什么?输出是什么?
  • 您可能已经知道这一点,但在尝试使用 argv[1] 之前,您还应该检查是否为 argc &gt; 1
  • 大部分#includes 对于这个片段来说是不必要的......

标签: c argument-passing


【解决方案1】:

您无法使用 == 运算符比较字符串 - 请改用 strcmp()

通过使用== 比较字符串,您是在比较char * 指针的地址,而不是字符串值。

【讨论】:

    【解决方案2】:

    在 C 中,字符串是通过 strcmp 函数进行比较的。相反,您只比较指针。所以:

    if (strcmp(argv[1],"-l") == 0)
    {
        printf("Yay!\n");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-15
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      相关资源
      最近更新 更多