一.strcmp函数
//字符串比较函数
const char* str1 要比较的第一个字符串 const char* str2 要比较的第二个字符串
库中实现的strcmp函数
int main ()
{
char key[] = "apple";
char buffer[80];
do {
printf ("Guess my favorite fruit? ");
fflush (stdout);
scanf ("%79s",buffer);
} while (strcmp (key,buffer) != 0);
puts ("Correct answer!");
return 0;
}
模拟实现strcmp函数
int My_strcmp(const char* dest, const char* src)
{
assert(dest);
assert(src);
while ((*dest) == (*src))
{
if (*dest == '\0')
{
return 0;
}
++dest;
++src;
}
if ((*dest) > (*src))
{
return 1;
}
else
{
return -1;
}
}
int main()
{
char str1[] = "zxwertyu";
char str2[] = "qqqqqqqq";
char str3[] = "zxwertyu";
char str4[] = "zxwe";
char str5[] = "zxwertyuaaaaaaaaaaa";
printf("%d\n", My_strcmp(str1, str2));
printf("%d\n", My_strcmp(str1, str3));
printf("%d\n", My_strcmp(str1, str4));
printf("%d\n", My_strcmp(str1, str5));
system("pause");
return 0;
}
二.strncmp函数
int strncmp(const char* str1,const char* str2,size_t num)
const char* str1 要比较的第一个字符串 const char* str2 要比较的第二个字符串 size_t num 两个字符串要比较的个数
库中实现的strncmp函数
int main ()
{
char str[][5] = { "R2D2" , "C3PO" , "R2A6" };
int n;
puts ("Looking for R2 astromech droids...");
for (n=0 ; n<3 ; n++)
if (strncmp (str[n],"R2xx",2) == 0)
{
printf ("found %s\n",str[n]);
}
return 0;
}
模拟实现strncmp函数
int My_strncmp(const char* str1, const char* str2, size_t len)
{
assert(str1);
assert(str2);
while (len--)
{
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0;
}
++str1;
++str2;
}
if (*str1 > *str2)
{
return 1;
}
else
{
return -1;
}
}
}
int main()
{
char str1[] = "zxwertyu";
char str2[] = "qqqqqqqq";
char str3[] = "zxwertyu";
char str4[] = "zxwe";
char str5[] = "zxwertyuaaaaaaaaaaa";
printf("%d\n", My_strncmp(str1, str2, 2));
printf("%d\n", My_strncmp(str1, str3, strlen(str1)));
printf("%d\n", My_strncmp(str1, str4, 4));
printf("%d\n", My_strncmp(str1, str5, strlen(str5)));
system("pause");
return 0;
}