我以为是编译器的问题。一开始我用的是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;
}
最佳答案
以下建议代码:
- 检查是否缺少命令行参数
- 无命令行参数时正确退出程序
- 遵循轴子:每行只有一个语句,并且每个语句(最多)一个变量声明。
现在建议的代码:
#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/