if
print ステートメントが、投稿の最初の文または表現と一致しません。両方が等しいことをテストしたい場合は、&&
ではなくを使用する必要があります||
。いずれかの文字列がテスト文字列と一致するかどうかをテストしたい場合、プログラムは問題ありません。コードの別の部分に問題があるはずです。これを証明するプログラムの例を次に示します。
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char *string1 = argv[1];
char *string2 = argv[2];
if ((strcmp(string1, "test1") == 0) || (strcmp (string2, "test2") ==0))
printf ("At least one string matched\n");
return 0;
}
そして出力:
$ ./example test1 bad
At least one string matched
$ ./example bad test2
At least one string matched
$ ./example bad bad
$ ./example test1 test2
At least one string matched
編集:さらに読んで、実際にテストして、それらの1つが正確に一致するかどうかを確認したいと思うかもしれません。その場合、. に別の式が必要になりますif
。たぶん次のようなものです:
int string1Matches = (strcmp(string1, "test1") == 0);
int string2Matches = (strcmp(string2, "test2") == 0);
if ((string1Matches && !string2Matches) || (!string1Matches && string2Matches))
printf("Exactly one string matches (not both!)\n");
もう一度編集します。
新しいプログラムは正常に動作しているようです。問題は何ですか? 出力例:
$ ./example
Enter the first string: test1
Enter the second string: bad
Both strings are same
$ ./example
Enter the first string: bad
Enter the second string: test2
Both strings are same
$ ./example
Enter the first string: test1
Enter the second string: test2
Both strings are same
$ ./example
Enter the first string: bad
Enter the second string: bad
You didnt enter any matching