我想比较字符串,每个字符与所有其他字符,无论它们是在同一位置还是在另一个位置具有相同的数字。
我不知道如何正确使用字符串比较,我尝试使用for
和while
循环使用count
,但我不知道。
我的问题是这个。例如。 我的密码是1234。 我的测试是1234。 在这种情况下,我有4人死亡。因为数字处于相同的位置。但在这种情况下。 我的密码是1234。 我的测试是1243。 我有2人死亡,因为1和2处于正确的位置,但4和3处于其他位置,但他们在另一个字符串中。 在这种情况下,我有2人死亡,2人受伤。 抱歉我的英语不是很好。谢谢你的帮助......
答案 0 :(得分:1)
strcmp
不会为您提供给定字符串中匹配的字符数。尝试下面的代码,它将给出输入字符串中匹配的字符数。
#include <string.h>
int GetMatchingChars (const char *s1, const char *s2)
{
int len1;
int len2;
int count = 0;
int minLen = 0;
char *shortPtr = NULL;
char *longPtr = NULL;
/* First check if the string are equal, return either len, no need to go further */
if (strcmp (s1, s2) == 0) {
return strlen(s1); /* or s2 */
}
len1 = strlen (s1);
len2 = strlen (s2);
minLen = (len1 <= len2)? len1:len2;
shortPtr = (len1 <= len2)? s1:s2;
longPtr = (shortPtr == s1)? s2:s1;
/* Loop through the shorter string */
while (*shortPtr != '\0') {
if (*shortPtr == *longPtr) {
count++;
}
shortPtr++;
longPtr++;
}
return count;
}
int main()
{
char *s1 = "saac";
char *s2 = "sbab";
printf ("Matching len = %d\n", GetMatchingChars (s1,s2));
}
答案 1 :(得分:0)
如果你有两个字符串如下:
char *str1="Hai", *str2="Hai";
使用strcmp(str1,str2)
比较 C
会返回
0 => if str1==str2
>0 => if str1 > str2, which is lexicographically compared
<0 => if str1 < str2
答案 2 :(得分:0)
在上面的答案中加点。
比较时不需要使用 for循环,因为strncmp将字符串作为输入。
strncmp
蜕变是
int strncmp(const char *s1, const char *s2, size_t n);