我无法比较两个字符。我写了一个非常基本的 C 问题来尝试命令行参数。
到目前为止,这是我的代码:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
char ch;
char *type = "";
char *gender = "";
int baby = 0;
int count = 0;
/* Options:
* -t = type of pet
* -g = gender
* -b = baby or adult
*/
while ((ch = getopt(argc, argv, "t:g:b")) != EOF)
switch (ch) {
case 't':
type = optarg;
break;
case 'g':
gender = optarg;
break;
case 'b':
baby = 1;
break;
default:
fprintf(stderr, "Invalid option.\n");
return 1;
}
argc -= optind;
argv += optind;
printf("You have chosen a %s.\n", type);
if (gender == 'f')
puts("It's a girl");
if (gender == 'b')
puts("It's a boy.");
// The main command line arguments should be about the traits of the pet
printf("%s", "Traits: ");
for (count = 0; count < argc; count++)
printf("%s ", argv[count]);
return 0;
}
因此,如果我在终端中输入:
$ ./pet_shop -t dog -g f cute small
我得到这个作为输出:
You have chosen a dog:
Traits: cute small
输出它缺少有关性别的信息,自从我输入 f 后,它应该是一个女孩。但我尝试通过 printf("%i", gender) 进行检查,它的值为 0。 g == 'f' 是比较两个字符的不正确方法吗?