strcmp在c和c++中代表的意思是比较两个字符串。
设这两个字符串为str1和str2。
若str1=str2,则返回零;
若str1<str2,则返回负数;
若str1>tr2,则返回正数;
其实也就是两个字符串从左到右逐个字符比较。(用ASCLL进行比较,也就是相减,但是要注意的就是确切的数值是依赖不同的c实现的)
百度百科里面有很详细的解释,也有不同的编译条件下的代码。
我这是在VS中实现的代码,这个代码会显示出每一字符比较出的ASCLL值结果。
简单的功能实现就只在主函数中提前输入两个字符串。
将它们传进my_strcmp中,在my_strcmp中进行计算输出。
my_strcmp中的计算呢。
首先先想到的是用s1,s2分别指向两个字符串中的第一个字符。
进行判断是否为’\0’,’\0’代表的是字符串已经结束。否则的就进行计算,输出,然后再把s1,s2向后移动一位,重复这个过程就好
#include "stdafx.h"
#include<stdlib.h>
#include <string.h>
#include<corecrt_memcpy_s.h>
void my_strcmp(const char *src1, const char *src2);
int main()
{ char src[4] = "adc";
char dst[4] = "aac";
my_strcmp(src, dst);
system("pause");
return 0;
}
void my_strcmp(const char *src1, const char *src2)
{ register const unsigned char*s1 = (const unsigned char *)src1;//强制类型转换
register const unsigned char*s2 = (const unsigned char *)src2;
while (*s1 != '\0'&&*s2 != '\0')
{
printf("%d ",*s1-*s2);
s1++;
s2++;
}
}