Strcmp函数的重写,功能和strcmp差不多,主函数有对比
#include<stdio.h> #include<string.h> #include<stdbool.h> typedef struct { char a[10]; int lenght; }string; int Strcmp(string s1,string s2) { bool equal=(s1.lenght==s2.lenght); int len=s1.lenght>s2.lenght?s2.lenght:s1.lenght; int i=0; for(;i<len;){ if(s1.a[i]==s2.a[i]) i++; else if(s1.a[i]>s2.a[i]) return s1.a[i]-s2.a[i]; else return s1.a[i]-s2.a[i]; } if(i==len&&equal) return 0; else if(i<s1.lenght) return s1.a[i]; else return s1.a[i]-s2.a[i]; } int main(){ string s1={"hello12",(int)strlen(s1.a)}; string s2={"hello12",(int)strlen(s2.a)}; printf("%d ",Strcmp(s1, s2)); printf("%d ",strcmp(s1.a, s2.a));//对比 }