无法运行我的代码,我不知道为什么它不起作用

标签 c

我以为是编译器的问题。一开始我用的是dev c++,结果崩溃了。然后,我使用了代码块,但它在终端上没有显示任何内容。我想知道是否是 Windows 10 的问题。

#include <stdio.h>
#include <string.h>

#define NUM_PLANETS 9

int main(int argc, char *argv[]) {
  char *planets[] = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn",
      "Uranus", "Neptune", "Pluto"};
  int i, j;
  for (i = 1; i < argc; i++) {
    for (j = 0; j < NUM_PLANETS; j++) {
      if (strcmp(argv[i], planets[j]) == 0) {
        printf("%s is planet %d\n", argv[i], j + 1);
        break;
      }
      if (j == NUM_PLANETS)
        printf("%s is not a planet.\n", argv[i]);
    }
  }
  return 0;
}

最佳答案

以下建议代码:

  1. 检查是否缺少命令行参数
  2. 无命令行参数时正确退出程序
  3. 遵循轴子:每行只有一个语句,并且每个语句(最多)一个变量声明。

现在建议的代码:

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

#define NUM_PLANETS 9

int main(int argc, char *argv[]) 
{
  char *planets[] = 
  {
      "Mercury", 
      "Venus", 
      "Earth", 
      "Mars", 
      "Jupiter", 
      "Saturn",
      "Uranus", 
      "Neptune", 
      "Pluto"
  };

  int i;
  int j;

  if (argc < 2 )
  {
      printf( "USAGE: %s <planet name> ...\n", argv[0] );
      exit( EXIT_FAILURE );
  }

  for (i = 1; i < argc; i++) 
  {
    for (j = 0; j < NUM_PLANETS; j++) 
    {
      if (strcmp(argv[i], planets[j]) == 0) 
      {
        printf("%s is planet %d\n", argv[i], j + 1);
        break;
      }
    }

    if (j == NUM_PLANETS)
        printf("%s is not a planet.\n", argv[i]);
  }

  return 0;
}

关于无法运行我的代码,我不知道为什么它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53037810/

相关文章:

c++ - 如何在使用 bufferevents 写入 libevent 后关闭套接字?

c - 如何减少Linux C应用程序(分离多线程)中的CPU使用率?

c - memcpy 未按预期工作

c# - 数学表达式求值器的简单库或实现

C 代码在 Linux 编译器中无法运行

c - 从文件中读取并将输出打印到文件

c - 读取用户输入,直到在 C 中按下 ESC

c - 测试 2 次刺痛是否有相同的单词 (C)

c - 使用strcat和strcpy出现问题

c - 了解如何将参数传递给 Assembly 中的函数