【问题标题】:Switch command doesn't work切换命令不起作用
【发布时间】:2017-03-16 07:32:53
【问题描述】:

我必须为明天与过滤器相关的作业做作业。我已经创建了我需要的函数,但我的 main 函数有问题,如下所示:

int main (int argc, char *argv[])
{
  printf ("Select program: \n1-makeLower \n2-makeUpper \n3-makeChange");
  switch(*argv[1])
  {
  case 1:
    makeLower();
    break;
  case 2:
    makeUpper();
    break;
  case 3;
    makechange();
    break;
  default;
    printf ("Error");
    break;
  }
  return 0;
}

当我尝试编译它时,出现错误“pp2.exe 已停止工作”。你们能帮我解决这个问题吗。另外,我需要从命令行使用这个程序来过滤一些数据。我是否正确使用了switch 命令?我可以在命令行工作时切换 beetwen 功能吗?

【问题讨论】:

  • 试试switch(argv[1][0] - '0')
  • 或者更像switch (atoi(argv[1]))
  • 两者都有效。但是,这两者都不是最优的,因为 argv 是命令行参数,但您要求输入 argv 不是。
  • 你可能想要类似switch(getchar() - '0')的东西
  • 另外,您需要default: 而不是default;,并且默认情况下不需要break;

标签: c switch-statement command line execution


【解决方案1】:

您不需要取消引用索引参数,索引它会取消引用字符串。 *argv[1] 应该是 argv[1] - 但在您切换它之前,您需要将该字符串转换为整数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-08
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2013-03-19
    • 1970-01-01
    相关资源
    最近更新 更多