strcmp,strncmp函数

来源:互联网 发布:id下载软件 编辑:程序博客网 时间:2024/06/05 02:54

一.strcmp函数

//字符串比较函数

int strcmp(const char* str1,const char* str2);
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;}


原创粉丝点击