**
1.实现strcmp()函数
**
strcmp()函数是字符串比较函数,注意,此处比较不是根据字符串的长度,而是ASCII码的大小,一旦遇到ASCII不同的字符,就能返回结果,当前者大于后者时,返回一个正数,当前者小于后者时,返回一个负数。只有当每个字符都相同时,返回0。
下面来实现我自己的strcmp()函数,有兴趣的朋友也可以按照我的博文:实现strcpy()和strncmp()函数中比较strcpy()和其库函数运行效率差的方法来做一个比较,看看我们自己编写的代码和库函数中的代码运行效率相差有多大,以便优化自己的代码。
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int my_strcmp(const char *dest, const char *sour)
{
assert(dest);
assert(sour);
while (*dest == *sour)
{
if (*dest == '\0')
return 0;
dest++;
sour++;
}
return *dest - *sour;
}
int main()
{
char arr1[20] = "abcdefg";
char arr2[] = "aba";
int r;
r = my_strcmp(arr1, arr2);
printf("%d\n", r);
system("pause");
return 0;
}
**
2.实现strncmp()函数
**
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int my_strncmp(const char *dest, const char *sour, size_t n)
{
assert(dest);
assert(sour);
while (*dest == *sour)
{
--n;
if ((n == 0) || (*dest == '\0'))
return 0;
dest++;
sour++;
}
return *dest - *sour;
}
int main()
{
char arr1[20] = "abcdefg";
char arr2[] = "aba";
int r;
r = my_strncmp(arr1, arr2, 2);
printf("%d\n", r);
system("pause");
return 0;
}