这次给大家介绍并模拟的是strcmp函数。
其实对于cplusplus网站上的解释我大多是看不懂的,自己的英语能力比较差,很多人说那你还看干啥,直接去百度,通俗易懂。我建议大家一定要去看一下http://www.cplusplus.com/这个网站对你不明白的函数的解释,原因有两点。一是因为他是一个官方网站,他对函数的描述和应用都是十分的规范的,不存在有人为的更改,你获得的信息的可靠性还是可以放心的。其次就是有的人在查询函数或者其他内容的时候会用到msdn,但是这个网站相对于msdn来说他会及时进行更新,计算机是一个发展的很快的行业,虽然函数并不会天天的更改 用法等等,但是有一天它更改了你能看到最新的也是很好的一件事情。但是这个网站就不能离线进行访问了。
这个就是百度通俗易懂的解释。
接下来就附上模仿这个函数的代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
int my_strcmp(const char *msg, const char *det)
{
assert(msg || det);
while ((*msg != NULL) && (*det != NULL))
{
if (*msg > *det)
return 1;
if (*msg < *det)
return -1;
else
{
*msg++;
*det++;
}
}
if ((*msg == '\0') && (*det != '\0'))
{
return -1;
}
if ((*msg != '\0') && (*det == '\0'))
{
return 1;
}
return 0;
}
int main()
{
char *a = "asdxsf";
char *b = "asdxsfq";
int m = 0;
m = my_strcmp(a, b);
printf("%d", m);
system("pause");
}
当然我认为这个库函数本身就是让我十分难以理解的,感觉这个函数或多或少有点说不出来的bug。就比如abcde和ad,是ad大。暂时就按照库函数这么写吧,那天悟透了再说。