strcmp函数是string库的常用函数,今天我们来看看如何自己实现这个函数:
先上代码:
#include <stdio.h>
#include<string.h>
void Strcmp(char *str1,char *str2)
{
while((*str1!='\0')&&(*str1==*str2))
{
str1++;
str2++;
}
int t;
t=*str1-*str2;
if(t==0)
printf("same string\n");
if(t>0)
printf("str1 is bigger\n");
if(t<0)
printf("str2 is bigger\n");
}
int main()
{
char str1[10],str2[10];
start:
gets(str1);
gets(str2);
Strcmp(str1,str2);
goto start;
return 0;
}
测试如下:
整个代码的精髓在于下面这句:
(*str1!='\0')&&(*str1==*str2)
这是判断两个字符串是否相等的关键。即:当字符指针指向空,意味着字符串已经移动到最后了,比较已经结束,可以退出循环。或者两个字符串不相等时,函数也可以退出了。
我们所需要的关键信息已经得到,接下来看看字符串是否相等,这取决于循环退出时,str1和str2指向的元素是否相等。
接下来就是if来判断了。这里比较简单就不展开讲了。