【C语言】模拟实现strcmp()、strncmp()函数

来源:互联网 发布:linux系统的手机 编辑:程序博客网 时间:2024/05/02 02:11

//strcmp

函数原型:int strcmpconst *string1,const char *string2;


参数说明:string1为第一个要比较的字符串,string2为第二个要比较的字符串

  
函数功能:比较字符串str1str2大小
  
返回说明:返回整数值:当str1<str2时,返回值<0; 

                      当str1=str2时,返回值=0

                      str1>str2时,返回值>0


#pragma warning (disable:4996)#include<stdio.h>#include<windows.h>#include<assert.h>//#include<string.h>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, "<");elsestrcpy(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, "<");elsestrcpy(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为指定的str1str2的比较的字符数。
  
函数功能:比较字符串str1str2的前n个字符。
  
返回说明:返回整数值:当str1<str2时,返回值<0; 

                      当str1=str2时,返回值=0; 

                      str1>str2时,返回值>0

#pragma warning (disable:4996)#include<stdio.h>#include<windows.h>#include<assert.h>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, "<");elsestrcpy(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, "<");elsestrcpy(tmp, "==");printf("Result:\t\tString 1 %s string 2\n\n", tmp);system("pause");return 0;}


0 0
原创粉丝点击