c语言memcmp和java的_【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别...

模拟实现内存比较函数memcmp:

该函数与strcmp有相似之处,都可用于字符串比较是否相同,若相同,则返回0值。若前者大于后者,则返回大于0的整型值,否则返回小于0的整型值。

区别在于:

strcmp只能比较字符串,memcmp是内存比较函数,原则上是比较内存的,但其实真正实现时并不是所有都可以比较,例如float,但我们至少可以比较字符串以及int型。

而对于strcmp,strncmp的比较:str1, str2 为需要比较的两个字符串,n为要比较的字符的数目,而函数strcmp()做不到,strcmp()可以比较全部字符串(因为它找字符串结束标志‘\0’)。

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

int my_memcmp(const void *p1, const void *p2, size_t count)

{

assert(p1);

assert(p2);

char *dest = (char *)p1;

char *src = (char *)p2;

while (count && *dest == *src)

{

count--;

dest++;

src++;

}

if (count == 0)

{

return 0;

}

else

{

return *dest  - *src - ‘\0’;

}

}

int main()

{

/*int arr1[] = { 1, 3, 20, 5 };            //比较整型

int arr2[] = { 1, 3, 10, 7 };*/

char arr1[] = "hello";                    //比较字符串

char arr2[] = "hello world";

int len = sizeof(arr1) / sizeof(arr1[0]);

int ret = my_memcmp(arr1, arr2, 12);

printf("%d", ret);

system("pause");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值