我正在尝试编写一个程序,如果任何一个字符串匹配,它将输出相同的printf。我试过跟随,但它不适合我。在这里我做了比较第一个字符串或第二个字符串,如果任何一个相同,那么它应该打印printf中列出的语句。
#include <stdio.h>
#include <string.h>
int main (){
char string1[10];
char string2[10];
printf("Enter the first string: ");
scanf ("%s", string1);
printf("Enter the second string: ");
scanf ("%s", string2);
if ((strcmp(string1, "test1") == 0) || (strcmp (string2, "test2") ==0))
printf ("Both strings are same\n");
else printf("You didnt enter any matching \n");
}
我在这里缺少什么?
答案 0 :(得分:1)
您的打印声明与帖子的第一句话或if
表达式不符。如果您要测试两者相等,则应使用&&
而不是||
。如果你想测试其中一个字符串是否与你的测试字符串匹配,你的程序就可以了。您必须对代码的不同部分有问题。这是一个示例程序,可以为您证明:
#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
编辑:在进一步阅读时我发现你实际上可能想要进行测试,以确定完全其中一个是否匹配。在这种情况下,您需要在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