strcmp函数是字符串比较函数,若* str1的第一个字符的ASCII值大于* str2第一个字符的ASCII值,返回值大于0, 若* str1的第一个字符的ASCII值小于*str2第一个字符的ASCII值,返回值小于0, 否则继续比较下一个字符,以此类推,直到遇到’\0’为止
//模拟实现strcmp函数
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int my_strcmp(const char *str1, const char *str2)
{
assert(str1);
assert(str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2)
return 1;
else if (*str1 < *str2)
return -1;
}
int main()
{
char *str1 = "ab";
char *str2 = "abc";
int ret=my_strcmp(str1, str2);
printf("%d\n",ret);
system("pause");
return 0;
}
strncmp函数是比较2个字符串前n个字符的大小,返回值与strcmp一样
//模拟实现strncmp函数
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int my_strncmp(const char *str1, const char *str2, int count)
{
assert(str1);
assert(str2);
if (*str1 > *str2)
return 1;
else if (*str1 < *str2)
return -1;
while ((count--) && (*str1 == *str2))
{
str1++;
str2++;
if ((*str1 == '\0') && (*str2 != '\0'))
{
return -1;
}
else if ((*str1 != '\0') && (*str2 == '\0'))
{
return 1;
}
else if ((*str1 == '\0') && (*str2 == '\0'))
{
return 0;
}
}
if (count == 0)
return 0;
}
int main()
{
char *str1 = "abc";
char *str2 = "abcdef";
int ret = my_strncmp(str1, str2, 2);
printf("%d\n",ret);
system("pause");
return 0;
}