2 つの文字を比較するのに問題があります。コマンド ライン引数を試すために、非常に基本的な 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 と入力したため、女の子である必要があります。しかし、値0を与えたprintf( "%i"、gender)でチェックしようとしました.g == 'f'は2つの文字を比較する間違った方法ですか?