//strcmp
函数原型:int strcmp (const *string1,const char *string2);
参数说明:string1为第一个要比较的字符串,string2为第二个要比较的字符串
函数功能:比较字符串str1和str2的大小。
返回说明:返回整数值:当str1
当str1=str2时,返回值=0;
当str1>str2时,返回值>0。
#pragma warning (disable:4996)
#include
#include
#include
//#include
int my_strcmp(const char *str1, const char *str2) //区分字符大小写
{
assert(str1);
assert(str2);
while (*str1&&*str2&&(*str1==*str2))
{
str1++;
str2++;
}
return *str1 - *str2;
}
int my__stricmp(char *str1,char *str2) //不区分字符大小写
{
assert(str1);
assert(str2);
while (*str1&&*str2 )
{
if (*str1>= 'A'&&*str1 <= 'Z')
*str1= *str1 + 'a' - 'A';
if (*str2 >= 'A'&&*str2 <= 'Z')
*str2 = *str2 + 'a' - 'A';
if (*str1 != *str2)
{
break;
}
str1++;
str2++;
}
return *str1 - *str2;
}
int main()
{
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";
char tmp[20];
int result;
/* 区分字符大小写 */
printf("Compare strings:\n\t%s\n\t%s\n\n", string1, string2);
result = my_strcmp(string1, string2);
if (result > 0)
strcpy(tmp, ">");
else if (result < 0)
strcpy(tmp, "<");
else
strcpy(tmp, "==");
printf("\tstrcmp: String 1 %s string 2\n", tmp);
/* 不区分字符大小写( my_stricmp) */
result = my__stricmp(string1, string2);
if (result > 0)
strcpy(tmp, ">");
else if (result < 0)
strcpy(tmp, "<");
else
strcpy(tmp, "==");
printf("\t_stricmp: String 1 %s string 2\n", tmp);
system("pause");
return 0;
}
//strncmp
函数原型:int strncmp (const char *string1,const char *string2,size_count)
参数说明:string1为第一个要比较的字符串,string2为第二个要比较的字符串,count为指定的str1与str2的比较的字符数。
函数功能:比较字符串str1和str2的前n个字符。
返回说明:返回整数值:当str1
当str1=str2时,返回值=0;
当str1>str2时,返回值>0。
#pragma warning (disable:4996)
#include
#include
#include
int my_strncmp(const char *str1, const char *str2, size_t count)
{
assert(str1);
assert(str2);
while (*str1&&*str2&&(*str1 == *str2)&&count--)
{
str1++;
str2++;
}
return *str1 - *str2;
}
int my__strnicmp(char *str1, char *str2, size_t count)
{
assert(str1);
assert(str2);
while (*str1&&*str2&&count--)
{
if (*str1 >= 'A'&&*str1 <= 'Z')
*str1 = *str1 + 'a' - 'A';
if (*str2 >= 'A'&&*str2 <= 'Z')
*str2 = *str2 + 'a' - 'A';
if (*str1 != *str2)
break;
str1++;
str2++;
}
return *str1 - *str2;
}
int main()
{
char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";
char tmp[20];
int result;
printf("Compare strings:\n\t\t%s\n\t\t%s\n\n", string1, string2);
printf("strncmp is case sensitive\n");
result = my_strncmp(string1, string2, 10); //区分字符大小写
if (result > 0)
strcpy(tmp, ">");
else if (result < 0)
strcpy(tmp, "<");
else
strcpy(tmp, "==");
printf("Result:\t\tString 1 %s string 2\n\n", tmp);
printf("_strnicmp is case-insensitive\n"); //不区分字符的大小写
result = my__strnicmp(string1, string2, 10);
if (result > 0)
strcpy(tmp, ">");
else if (result < 0)
strcpy(tmp, "<");
else
strcpy(tmp, "==");
printf("Result:\t\tString 1 %s string 2\n\n", tmp);
system("pause");
return 0;
}