模拟实现C语言–strcmp函数
文章目录
- 模拟实现C语言--strcmp函数
- 一、strcmp函数是什么?
- 二、使用示例
- 三、模拟实现
- 3.1 模拟实现方式一
- 3.2 模拟实现方式二
一、strcmp函数是什么?
字符串比较函数:比较的是对应位置的ASCII值
int strcmp ( const char * str1, const char * str2 );
标准规定:
- 第一个字符串大于第二个字符串,则返回大于0的数字
- 第一个字符串等于第二个字符串,则返回0
- 第一个字符串小于第二个字符串,则返回小于0的数字
二、使用示例
#include <stdio.h>
int main()
{
char str[] = "hel";
char arr[20] = "hello ";
int ret = strcmp(arr, str);
printf("%d", ret);
return 0;
}
vs环境下得出的值是1,不同环境下得出的具体数值不同,但都是正数
三、模拟实现
3.1 模拟实现方式一
#include <stdio.h>
#include <assert.h>
int my_strcmp(const char* dest, const char* src)
{
assert(dest != NULL);
assert(src != NULL);
while (*dest == *src)
{
if (*dest == '\0')
return 0;
dest++;
src++;
}
if (*dest > *src)
{
return 1;
}
else
{
return -1;
}
}
int main()
{
char str[] = "hel";
char arr[20] = "hello ";
int ret = my_strcmp(arr, str);
printf("%d", ret);
return 0;
}
3.2 模拟实现方式二
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
int my_strcmp(const char* src, const char* dst)
{
int ret = 0;
assert(src != NULL);
assert(dst != NULL);
while (!(ret = *(unsigned char*)src - *(unsigned char*)dst) && *dst)
++src, ++dst;
if (ret < 0)
ret = -1;
else if (ret > 0)
ret = 1;
return(ret);
}
int main()
{
char str[] = "hel";
char arr[20] = "hello ";
int ret = my_strcmp(arr, str);
printf("%d", ret);
return 0;
}