/*
编程实现 stcmp 库函数 ,
对于 两个字符串 str1 和str2 如果相等 放回 0 ,如果 str1 大于str2 返回1 否则 返回-1;
编程实现 stcmp 库函数 ,
对于 两个字符串 str1 和str2 如果相等 放回 0 ,如果 str1 大于str2 返回1 否则 返回-1;
*/
#include <stdio.h>
#include <stdlib.h>
int mystcmp ( const char * str1,const char* str2){
int ret = 0;
while ( !( ret = *(unsigned *)str1- *(unsigned *)str2 ) && *str2 ){/* 如果字符相等循环 且str2 不等于空字符循环*/
++str2;
++str1;
}
if (ret <0)
return -1;
else if(ret >0)
return 1;
return ret;
}
下面 我们来测试一下 void main (){
/* 数组名 是常量指针 不能作为 变量 进行赋值*/
char str[10] ="123456";
char str1[10] ="123456";
char str2[10] = "12";
char str3[10] = "1266";
int test = mystcmp(str,str1);
int test1 = mystcmp (str1,str2);
int test2 = mystcmp (str2,str3);
printf ("%d \n %d\n %d \n ",test,test1,test2);
system("pause");
}