我想检查argv[]
中的参数,但是它无法检查第二个字符。
例如,
我可以这样做:
int main(int argc, char *argv[]){
if (*argv[1] == "A")
printf("Hello: %s\n", argv[1]);
}
但是,当我将“A”更改为“AB”时,我无法检查argv[1]
:
if (*argv[1] == "AB")
printf("Hello: %s\n", argv[1]);
}
答案 0 :(得分:3)
字符串与C中的strcmp()
进行比较,几乎从不与==
进行比较:
if(strcmp(argv[1], "AB") == 0)
printf("the second argument is AB\n");
注意,当比较的字符串相等时,返回0。
答案 1 :(得分:1)
在这一行:
if (*argv[1] == "AB")
您要将char
与char*
进行比较。这些是不同的类型。此外,即使第一个操作数是char*
,您仍然不应该使用==
来比较字符串,因为它只是比较指针值。请改用strncmp()
if (strncmp("AB", argv[1], 2) == 0)
如果argv[1]
的两个第一个字符为"AB"
,则此条件为真。如果argv[1]
是"ABC"
。如果您想检查argv[1]
是否完全"AB"
,请使用strcmp()
这样
if (strcmp("AB", argv[1]) == 0)
请注意,使用==
比较单个字符是可以的:
if (argv[1][0] == 'A')
此外,在假设argv[1]
有效之前,您应该检查argc
以确保您确实已经获得了参数。
答案 2 :(得分:0)
*argv[1]
是char
。你不应该将它与字符串(char*
)进行比较。如果你想检查它是否是A,请if (*argv[1]=='A')
如果要查看整个论点,请执行strcmp(argv[1],"AB")
答案 3 :(得分:0)
你应该停止比较指针和字符,这不健康。
你可以*argv[1]=='A'
。如果有两个两个字符,则应使用strncmp
。