string의strcmp 함수

6901 단어 String
Author: bakari  Date: 2012/8/9
전편에 이어...
다음은 제가 쓴 코드와 원본 코드를 비교한 것입니다. 모두 엄격한 테스트를 통과했고 각각 "string의"시리즈로 설명했습니다.
다음은strcmp,stricmp,strncmp 함수를 포함합니다
1 //strcmp

2 int Mystrcmp(const char *str1, const char *str2);

3 int Mystricmp(const char *str1, const char *str2);

4 int Mystrncmp(const char *str1, const char *str2, size_t nCount);
 1 /*******************************************************

 2  *  strcmp , stricmp and strncmp

 3  *  stricmp and strncmp need to improve!

 4  *  stricmp ignore case , but strcmp not!

 5  *******************************************************/

 6 int Mystrcmp(const char *str1, const char *str2){

 7     assert(NULL != str1 && NULL != str2);

 8     while(*str1 && *str2 && (*str1 == *str2)){

 9             str1 ++;

10             str2 ++;

11     }

12    

13    /* This is source code,Great ! */

14    /* int ret;

15     while(1){

16         if((ret = (*str1++ - *str2)) != 0 || !*str2 ++)

17             break;

18     }

19     return ret;

20     */

21     return (*str1 - *str2);

22 }

23 int Mystricmp(const char *str1, const char *str2){

24     assert(NULL != str1 && NULL != str2);

25     while(*str1 && *str2){

26         if((*str1 == *str2) || (*str1 + 32 == *str2) || (*str1 - 32 == *str2)){

27             str1++;

28             str2++;

29             continue;

30         }

31     }

32     return *str1 - *str2;

33 }

34 int Mystrncmp(const char *str1, const char *str2, size_t nCount){

35     assert(NULL != str1 && NULL != str2 && nCount <= \

36            ((strlen(str1) < strlen(str2))? strlen(str1): strlen(str2)));

37     while((--nCount) && (*str1 == *str2) ){

38             str1 ++;

39             str2 ++;

40     }

41     return *str1 - *str2;

42 }

다른 해법이 있는 환영 교류!

좋은 웹페이지 즐겨찾기