/*************************************************************************
> File Name: 004.c
> Author: yuri
> Mail: yuri_chen_28@163.com
> Created Time: 2019年04月13日 星期六 09时09分35秒
> mystrcmp就是一直比较出现不一样的字符,并比较谁的字符ASCII码值大,出现\0时结束循环直接比较大小
> mystrncmp就是在mystrcmp基础上加上长度判断
************************************************************************/
#include<stdio.h>
#include<assert.h>
#include<string.h>
int mystrcmp(const char *p_dest, const char *p_src)
{
assert(p_dest != NULL && p_src != NULL);
while((*p_dest == *p_src) && *p_dest && *p_src)
{
p_dest++;
p_src++;
}
if(*p_dest > *p_src) return 1;
else if(*p_dest == *p_src) return 0;
else return -1;
}
int mystrncmp(const char *p_dest, const char *p_src, int size)
{
assert(p_dest != NULL && p_src != NULL);
while((*p_dest == *p_src) && *p_dest && *p_src && --size)
{
p_dest++;
p_src++;
}
if(*p_dest > *p_src) return 1;
else if(*p_dest == *p_src) return 0;
else return -1;
}
int main()
{
printf("%d\n", mystrcmp("abccdc", "abce"));
printf("%d\n", strcmp("abccdc", "abce"));
// printf("%d\n", mystrcmp("abccdc", NULL));
printf("%d\n", mystrncmp("bccdc", "abcab", 10));
printf("%d\n", strncmp("bccdc", "abcab", 10));
return 0;
}
注意:为了保证程序的健壮,需要使用assert()函数判断指针的有效性!