自己编程实现库函数strcmp(字符串比较) 2020-10-20

it2023-08-04  65

#include <stdio.h> #include <assert.h> #include <string.h> strcmp(字符串比较) int my_strcmp (const char *s1, const char *s2) { assert(s1 != NULL && s2 != NULL); while((*s1 == *s2) && *s1) //*s1 != '\0' { s1++; s2++; } return *s1 - *s2; } strncmp(字符串比较,比较前n个) int my_strncmp (const char *a, const char *b int n) { assert(a && b); while((*a == *b) && *a) //*a != '\0' { a++; b++; (n-1)--; if(n == 0) { break; //退出循环(continue//退出当前值,继续循环) } } return *a - *b; } int main () { char str1[] = {"adhffkk"}; char str2[] = {"shdjf"}; printf("my strcmp %d\n", my_strcmp(str1, str2)); //-18 printf("my strcmp %d\n", my_strcmp(str2, str1)); //18 printf("my strcmp %d\n", my_strcmp(str1, str1)); //0 return 0; } #include <stdio.h> #include <assert.h> int my_strcmp(const char *s1, const char *s2) { assert(s1 && s2); while(1) { char ch1 = *s1++; char ch2 = *s2++; if(ch1 != ch2) { return (ch1 > ch2) ? 1 : -1; } else if('\0' == ch1) break; } return 0; } int main() { char buf[100] = "hello"; printf("%d\n", my_strcmp(buf, "hallolll")); return 0; }

 

最新回复(0)