在c中使用带有命令行参数的if语句
我很难让if语句与命令行中的参数一起工作。我每次都会收到一个错误,它是‘指针和整数‘char*’和‘int’之间的比较’。任何帮助都将不胜感激。以下是我必须做的事情的描述: 该程序将从命令行读取一个参数,并将其转换为相应月份的名称。即,如果使用以下参数运行程序: 它将打印以下消息: 这个月是“四月”在c中使用带有命令行参数的if语句,c,if-statement,command-line,C,If Statement,Command Line,我很难让if语句与命令行中的参数一起工作。我每次都会收到一个错误,它是‘指针和整数‘char*’和‘int’之间的比较’。任何帮助都将不胜感激。以下是我必须做的事情的描述: 该程序将从命令行读取一个参数,并将其转换为相应月份的名称。即,如果使用以下参数运行程序: 它将打印以下消息: 这个月是“四月” #include <stdio.h> int main(int argc, char *argv[]) { if(argv[1] == 1){ printf("
#include <stdio.h>
int main(int argc, char *argv[]) {
if(argv[1] == 1){
printf("You entered the number 1.");
} else {
printf("You entered a different number.");
}
return 0;
}
命令行上传递的参数是字符串,因此需要使用strcmp来比较它们
int main(int argc, char *argv[]) {
if(argc > 1 && (strcmp(argv[1],"1") == 0)){
printf("You entered the number 1.");
} else {
printf("You entered a different number.");
}
return 0;
}
命令行上传递的参数是字符串,因此需要使用strcmp来比较它们
int main(int argc, char *argv[]) {
if(argc > 1 && (strcmp(argv[1],"1") == 0)){
printf("You entered the number 1.");
} else {
printf("You entered a different number.");
}
return 0;
}
Argv返回指向字符数组的指针,因此您的程序必须如下所示:
#include <stdio.h>
int main(int argc, char *argv[]) {
if(argv[1][0] == '1'){
printf("You entered the number 1.");
} else {
printf("You entered a different number.");
}
return 0;
}
Argv返回指向字符数组的指针,因此您的程序必须如下所示:
#include <stdio.h>
int main(int argc, char *argv[]) {
if(argv[1][0] == '1'){
printf("You entered the number 1.");
} else {
printf("You entered a different number.");
}
return 0;
}
如果希望像使用整数一样使用命令行参数,则必须使用atoi修改该类型
#include <stdio.h>
int main(int argc, char *argv[]) {
if(atoi(argv[1]) == 1){
printf("You entered the number 1.");
} else {
printf("You entered a different number.");
}
return 0;
}
如果希望像使用整数一样使用命令行参数,则必须使用atoi修改该类型
#include <stdio.h>
int main(int argc, char *argv[]) {
if(atoi(argv[1]) == 1){
printf("You entered the number 1.");
} else {
printf("You entered a different number.");
}
return 0;
}
编译器是正确的-您正在比较char*和int 您必须将argv[1]转换为int,例如使用strol,或者通过添加引号-1将1转换为char*,然后与strcmp进行比较,而不是==
在使用参数时,检查argc中参数的数量也是您应该做的事情。谢谢@Ingo Leonhardt编译器是正确的-您正在比较char*和int 您必须将argv[1]转换为int,例如使用strol,或者通过添加引号-1将1转换为char*,然后与strcmp进行比较,而不是==
在使用参数时,检查argc中参数的数量也是您应该做的事情。感谢@Ingo Leonhardtargv[1]是指向以null结尾的字符串的指针,将指针与1进行比较没有多大意义。如果argv[1][0]='1'&&argv[1][1]='\0'argv[1]是指向以null结尾的字符串的指针,则将指针与1进行比较没有多大意义。如果argv[1][0]='1'&&argv[1][1]是指针,则没有多大意义=='\0'非常感谢您。我昨晚花了几个小时想弄明白怎么做,所以这意味着很多@AntonioOcasio如果您想使用,您可能还需要使用atoi或strtol将字符串转换为整数。非常感谢。我昨晚花了几个小时想弄明白怎么做,所以这意味着很多@AntonioOcasio如果你想使用的话,你也可以使用atoi或strtol将字符串转换成整数;如果argv[1]==1仍然不存在work@IngoLeonhardt哦,对了。因此,您需要将comparison更改为strcmp,而不是==.right,并检查argc。也许你不想修改你的回答对不起,太冒昧了。单引号只有在你按照@vladimir在他的回答中建议的方式使用时才有效谢谢@IngoLeonhardt,我不得不尝试使用“1”,因为我认为它会起作用:但它不会,所以我删除了该部分。添加引号无法修复代码;如果argv[1]==1仍然不存在work@IngoLeonhardt哦,对了。因此,您需要将comparison更改为strcmp,而不是==.right,并检查argc。也许你不想修改你的回答对不起,太冒昧了。单引号只有在你按照@vladimir在他的回答中建议的方式使用时才有效谢谢@IngoLeonhardt,我必须尝试使用“1”,因为我认为它会起作用:但它不会,所以我删除了该部分。但是最好先检查argc,但最好先检查argc